Service:
1.启动服务时,服务会先调用onCreat再调用onStartCommand。
2.不管新建多少个服务,操作的服务都只有一个。
3.没有销毁服务,再去点击启动,没有创建这个调用,而是直接点击多少歌启动,调用多少个启动。
4.点击绑定服务,服务是先创建后绑定,没有启动。
5.解绑和绑定的ServiceConnection应该要一样,而且当解绑的时候,会经历解绑-->销毁。
6.退出程序会自动解绑和销毁。
7.已存在的服务,先启动再绑定,点击解绑不会调用销毁。
8.绑定会随着生命周期结束而结束,绑定的执行任务是进度的监控。
9.自定义一个类继承Binder(),在onBind中返回这个类的对象,比直接返回IBinder()好,因为IBinder里面要实现的方法太多,大部分都不认识。
10.进度监控:IBinder和ServiceConnection。
11.解绑后,onBind由于只调用一次,所以再点击绑定无效。但是ServiceConnection里面的Connected会被调用。
AIDL:
1.远程启动Service用隐式启动,在注册文件中添加过滤器,用别名操作。
2.在需要被远程控制的包右键,新建AIDL文件,rebuild后会自动生成Java文件。
3.IBind仅限同进程,远程不行。
4.把刚才返回MyBinder改为返回IMyAidlInterface.Stub。
5.远程控制,双方都必须有AIDL文件,直接复制即可,要保证完全一样,然后rebuild自动生成文件。
ANR:
1.主活动中,5秒以上会出现ANR。
2.开发者选项那里可以关闭ANR。
Looper:
1.主线程中可以操作子线程Handler对象发送消息给子线程。
2.给谁就操作谁的handler。
3.子线程中,Looper.prepare和Looper.loop之间写new handler。
UDP:
1.client先发数据,server才可以接收和发送。
2.异步可以用try...catch,同步尽量不用try...catch,借助接口。
3.有网络交互时,就要开一个子线程,os下的handler。
TCP:
1.try...catch快捷键:ctrl+alt+t。
2.先开server再开client,不然client没有端口号或ip会报错。
3.这里的server不能发送消息,当时有多个client消息可以互看。
4.inputstream,outputstream,socket都是在onDestroy那里,独立try...catch。
5.在构造方法中,new一个线程容易出现异步问题,要注意。
6.stringbuffer同步,安全,但是慢;stringbuilder快,但相对不安全。
7.一个汉字是三个字节。
8.处理乱码两种方式:第一种比较复杂,第二种是把byte数组转变成char数组。
HTTP:
1.某些自签名证书不被信任,原来的http解析不了,要用https。
2.https安全性比http要高,若把里面的方法空置,就没有发挥它的安全性。
BLE 4.0:
1.BlueManager 的最小sdk要大于等于18。
2.空指针的情况,可以直接return掉。
3.GATT中,有多个service,一个service中有多个characteristic。
***自己总结的一些小知识,欢迎大家来纠错,或有什么看法也可以说出来☺***
网友评论