android:第十章,后台的默默劳动者——服务,学习笔记
一、多线程
1)本章首先介绍了安卓的多线程编程,说明在子线程中如果要修改UI,必须通过Handler, Message, MessageQueue, Looper来实现,但是这样毕竟太麻烦了。
2)然后紧接着就给出了AsyncTask,通过继承这个类,就可以在他的里面直接修改UI元素,方便很多;
二、服务
1)首先给出服务的常规方法,比如创建onCreate、启动onStartCommand、停止onStop、销毁onDestroy;
2)然后说明了Activity和Service之间如何通信,这里要借助一个Binder和ServiceConnection两个抽象类,当然还有Activity中的bindService, unbindService方法,
3)接线来就提出了前台服务的概念了,这个确实现在很多程序都在用,其实实现起来很简单,就是借助于我们在第八章中的系统通知的Notification,然后再调用setForeground(xxxx)来实现;
4)紧接着IntentService出现了;
其实开篇作者就提出了一个问题,不要被后台服务这个名字所迷惑,其实服务默认都是运行在主线程的,所以如果在里面做很耗时的事情的主线程就会很卡,会出现ANR,所以我们还是要考虑使用真正的后台服务,也就是IntentService。
最后作者给出了一个完整的例子,在例子中,作者没有使用IntentService,而是使用Service+AsyncTask的方式,后面我倒是可以考虑使用IntentService来重写一下这个例子。