Android 安装界面启动APP后台切前台重复创建

在安装界面点击打开,讲app切到后台再切回前台后,重新进入欢迎页。

在欢迎页或启动页onCreate后添加判断

1
2
3
4
5

if (intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) {
finish()
return
}

李利锋@limxing
2018-11-27

分享到

Kotlin的一些扩展函数

Kotlin的一些扩展函数

标签(空格分隔): Android Kotlin


StandardKt.class 通用函数

repeat(Int){}

代码块执行多少次

1
2
3
repeat(2){
println("This is $it time")
}

with(obj){}

用法1:接收一个对象,在代码块中直接调用属性值赋值
用法2:接收一个对象后,可使用其属性转换成另外一个对象返回

1
2
3
4
5
6
7
8
9
10
11
12
with(TextView(context)) {
text = "Hello Kotlin"
textSize = 16f
setTextColor(android.R.color.white)
}

val imageView = with(TextView(context)) {
text = "Hello Kotlin"
textSize = 16f
setTextColor(android.R.color.white)
ImageView(context)
}

.run{}

与with类似,只不过是错用在对象上

1
2
3
4
5
TextView(context).run {
text = "Hello Kotlin"
textSize = 16f
setTextColor(android.R.color.white)
}

.let{}

多用于执行依据代码块,用在可能为空的对象上

1
2
3
4
val data = 1
data?.let {
println("data is not null")
}

.apply{}

对象的扩展方法,类似with

1
2
3
4
5
val textView = TextView(context).apply {
text = "Hello Kotlin"
textSize = 16
setTextColor(android.R.color.white)
}

.takeIf{}

.takeUnless{}

synchronized(Any){}

CloseableKt.class

.use{}

用于流操作,能够自动关闭流资源

1
2
3
assets.open("data.json").reader().use {
val text = it.readText()
}

closeFinally()

CollectionsKt.class

.groupBy{}

用于对集合进行分组,返回的是Map集合,key是{条件},value是集合中的对象

1
2
val list = listOf("abc", "fd", "edd", "zdc","pkj")
list.groupBy { it.first() }.forEach(::println)

.forEach{}

对集合进行遍历,array,list,map…

1
2
3
val list = listOf("abc", "fd", "edd", "zdc","pkj")
list.forEach (::println)
list.forEach{ println(it) }

.forEachIndexed{ index, T -> }

对数组进行遍历,提供角标和对象

1
2
3
list.forEachIndexed { index, s ->
println("index:$index obj:$s")
}

.filter{}

筛选指定条件的对象返回List

1
2
3
list.filter {
it.first() == 'a'
}

.reversed()

返回集合的倒序

1
list.reversed()

List.zip(List):List<Pair<T, R>>

两个集合合并,返回Pair对象

.average()

返回集合内数的平均值

.count()

返回集合的个数

…more collect

分享到

Android 三个SDKVersion的含义

1
2
3
4
5
6
7
8
9
10
11
android {
compileSdkVersion 27
defaultConfig {
applicationId "online.shuzhi.app"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}

compileSdkVersion

表示整个项目编译时所使用的sdk版本,用于一些检查,一般使用最新版本,此值,影响了dependencies中Android Support的一些依赖包,需要同步到此版本的最新版本的依赖包,否则会提示报错,但不会影响编译

minSdkVersion

表示打包后的apk支持最低Android系统为多少,此值会记录在apk安装包中

targetSdkVersion

关系到是否能够使用到什么版本的新特性。举例:
android 23 ,加入了运行时权限,那么如果设置为23及之后的值,则需要在代码中适配运行时权限的操作
android 26,加入了通知栏渠道,那么在26之后的值需要使用最新的代码编写通知

此值关系到能否使用最新版本的android中的新效果,新特性,同时在某些功能上需要重新编写代码,因此,如果不想适配新的功能,则不要设置此值为最新,同时也无法使用到最新版本所优化的一些功能。

结论:如果没有使用到最新SDK中的技术,某一版本就能够达到开发APP的要求,那么也就没有必要升级到最新版本的targetSdkVersion,不过如果你已经了解并熟悉了最新特性的代码的编写,升级到响应的sdk版本,能够得到更好的效果。

附android版本图:

分享到

IOS移动开发:数据库orm增删改查

基于SQLite.swift的数据库orm增删改查 github:XMDBModel

1
2
3
4
5
6
7
8
9
/*
XMDBModel Type SQLite.swift Type SQLite Type
NSNumber Int64(Int,Bool) INTEGER
NSNumber Double REAL
String String TEXT
nil nil NULL
Data SQLite.Blob BLOB
Date Int64 (Date) INTEGER
*/

How To Use

1、copy Source to your project

2、add depend library:pod ‘SQLite.swift’, ‘~> 0.11.4’

3、creat Model imp:XMDBModel

4、API :demo中XMBean中有属性方法介绍,ViewController中有增删改查使用方法

参考:

ActiveSQLite

License

XMDBModel is available under the MIT license.

分享到

Mysql数据库的迁移

备份:mysqldump -uroot -p1234 [databases name] >bck.sql
还原:mysql -uroot -p1234 <bck.sql

分享到

Centos+python3+nginx+uwsgi+flask

1、下载Python3

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

2、安装openssl

$ yum install openssl -y (-y 是遇到选择yes/no的时候默认提前yes了)
$ yum install openssl-devel -y

3、解压Python3

$ tar -zxf Python-3.6.3.tgz
$ cd Python-3.6.3

4、编译Python

$ ./configure
$ make & make install

5、安装虚拟环境

$ pip3 install virtualenv
$ virtualenv --no-site-packages -p python3 **_env (不关联系统库,使用python3)

$ source **_env/bin/activate(激活)
$ deactivate (退出虚拟环境)

6、安装nginx

$ yum install nginx
$ service nginx start

6.1、谁占用了80端口?kill掉

$ netstat -tln | grep 80
$ kill -9 'id'

7、安装uwsgi

$ pip install uwsgi

8、配置nginx与uwsgi之间

$ vim /etc/nginx/nginx.conf
    server {
        listen 80;
        server_name localhost;
        charset utf-8;
        client_max_body_size 75M;
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
            uwsgi_param UWSGI_PYHOME /var/www/leefeng_env;
            uwsgi_param UWSGI_CHDIR /var/www/leefeng;
            uwsgi_param UWSGI_SCRIPT core:app;
        }
    }
$ vim /var/www/leefeng/uwsgi.ini
    [uwsgi]
    socket = 127.0.0.1:8000
    plugins = python
    chidir = /var/www/leefeng
    virtualenv = /var/www/leefeng_env
    wsgi-file = core.py
    callable = app

    threads = 2
    processes = 4

9、编写代码

$ pip install flask
$ vim /var/www/leefeng/core.py
1
2
3
4
5
6
7
8
9
from flask import Flask
app=Flask(__name__)

@app.route('/')
def index():
return '<h2>Hello Word!</h2>'

if __name__ == '__main__':
app.run()

10、开启

$ uwsgi uwsgi.ini
$ nohup uwsgi uwsgi.ini & (断开终端依旧运行)
$ ps -ef|grep uwsgi (查询正在运行的uwsgi的进程,然后kill -9 id 后退出uwsgi)

错误解决

make时报错zipimport.ZipImportError: can't decompress data; zlib not available:#yum install zlib-devel
启动nginx报错:nginx: [emerg] socket() [::]:80 failed=需要在nginx.conf 注释掉#listen       [::]:80 default_server;
pip报错:ssl module in Python is not available=(需要重新python :./configure make & make install )
yum install openssl -y (-y 是遇到选择yes/no的时候默认提前yes了)
yum install openssl-devel -y
安装python错误:Prior to installing Python in CentOS 7, let’s make sure our system has all the necessary development dependencies:

# yum -y groupinstall development
# yum -y install zlib-devel


1.查看数据库编码格式
mysql> show variables like 'character_set_database';
2.查看数据表的编码格式
mysql> show create table <表名>;
5.修改数据库的编码格式
mysql>alter database <数据库名> character set utf8;
6.修改数据表格编码格式
mysql>alter table <表名> character set utf8;
分享到

Linux安装Python3

一、首先,官网下载python3的所需版本。

wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz

想下载到那个文件夹下就先进入到那个文件夹下——cd /home/download

二、然后,解压缩文件》

tar -xvf Python-3.6.0.tgz

三、创建安装文件的路径。(可以不指定目录)

mkdir /usr/local/python3

四、编译。(可以直接./configure,那样的话python3就可以与系统区分了)

./configure –prefix=/usr/local/python3

五、安装。(失败没有安装gcc):#yum install gcc

1、make

2、make install

3、完毕
(第四部直接./configure不需要软连接)以下步骤不需要操作了

六、创建新版本的软连接。

1、修改旧版本

mv /usr/bin/python /usr/bin/python_bak

2、创建新的软连接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

3、检查python的版本

python -V

python-3.6.0

软连接创建成功

七、配置成功后,pip3用不了,需进一步配置。

1、PATH=$PATH:$HOME/bin:

2、PATH=$PATH:$HOME/bin:/usr/local/python3/bin

3、完成

这时pip3就可以使用了。

分享到

Linux 命令

1.查找被占用的端口

1
2
netstat -tln
netstat -tln | grep 8083

netstat -tln 查看端口使用情况,而netstat -tln | grep 8083 则是只查看端口8083的使用情况

2.查看端口属于哪个程序?端口被哪个进程占用

1
lsof -i :8083

3.杀掉占用端口的进程

1
kill -9 进程id

4、数据库备份

1
2
3
4
如果把文件从远程机器拷贝到本机当前目录用这个命令: 
scp root@192.168.0.2:/home/a.tar.tz
拷贝远程机器的整个目录下的文件
scp -r root@192.168.0.2:/home/* ./

5、添加全局环境变量

1
2
3
$ sudo vi /etc/paths

/usr/local/mysql/bin

6、数据库创建database

1
CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;

分享到

Just Do It

最近的一段工作中,进入了大量学习的阶段,压力并不是外在的,而是自己强加给自己的,需要适度的适应。

<a>此处删了100行</a>
Python,Kotlin,Swift,Java...

Just Do It
分享到

Change Coming Soon

分享到