一、多线程
1.线程
Android里面更新UI必须在主线程中更新,子线程中不能更新UI,kotlin有其简化的开启线程方法
thread{
}
2.异步处理机制
1.Message
2.Handler
3.MessageQueue
4.Looper
3.利用AsyncTask轻松处理异步处理
1.onPreExecute()
2.doInBackground()
3.onProgressUpdate()
4.onPostExecute()
二、Service基本用法
非常适合处理一些比较耗时的操作,比如下载、播放音乐等等,不需要用户进行多少的交互,在程序进入后台之后进行操作
onCreate()
onStartCommand()
onDestroy()
onBind()
三、Service的生命周期
service只要启动或者被绑定都会处于运行状态,故需要停止service和解绑service这样service才会被销毁
四、前台Service的使用
由于android系统近些年对于后台的严格控制,所以需要使用前台service才能比较稳妥的保证service一直处于运行状态,
前台service有点像通知,不过我们需要进行权限声明
<users-permission android:name = "android.permission.FOREGROUND_SERVICE"/>
五、Kotlin:泛型的高级特性
1.泛型实化
使得我们可以在运行期间也清楚泛型的具体类型,具体实现是kotlin的内联函数
举个栗子
inline fun < reified T> getGenericType() = T::class.java
2.泛型的协变和逆变
首先这部分可能由于用处比较小,可以以后用到了再学,以下只给出概念
fun hhh(p:T):T{
}
A是B的子类,如果类似List<T>这种泛型,要想List<A>也是List<B>的子类
必须保证泛型T不能出现再in位置,只能出现在out位置
跟协变有点反过来的样子
A是B的子类,如果类似List<T>这种泛型,要想List<B>也是List<A>的子类
必须保证泛型T不能出现再out位置,只能出现在in位置
这类特性估计应用比较窄吧,比较难以理解
|