android面试/笔试题归纳2
第二波,继续继续,大家多多指教。
题目
- 自定义view
- service的基础知识
- thread在applicition,activity,service中创建有什么区别
- thread,activity,service之间怎么互相通信
- service保活
答案
- 自定义view
自定义view有点深,有点复杂。给几篇参考文章,大家根据自己需求回答吧。
郭霖大神的文章,一共四篇,讲得很详细
教你搞定Android自定义View - service的基础知识
启动服务有两种方法,与此对应的就是两种生命周期。
通过startService启动服务。依次调用onCreate -> onStartCommand
通过stopService关闭服务。调用onDestroy方法。无论之前服务被startService了多少次,都只需要一次stopService就能关闭服务。
通过bindService启动服务。依次调用onCreate-> onBind
通过unbindService关闭服务。调用onUnbind -> onDestory方法
反复调用bindService不会多次生成Service实例。通过bind绑定的服务,与调用者可以说是绑定在一起,同生共死的。当调用者被销毁,服务也会立刻终止。
-
thread在applicition,activity,service中创建有什么区别
如果在activity中创建thread,需要在ondestory方法中停止线程。在application和service中也是同理的。
于是乎在哪里创建thread取决于你希望你的thread存活多久。相比来说,activity中的thread存活的时间最短,activity跳转时就会结束,application次之,service可以一直在后台运行,所以存活的时间最长。 -
thread,activity,service之间怎么互相通信
activity和service之间:
1.binder对象 2.广播
activity或service和thread通信:
1.handler 2.AsyncTask 3.Activity.runOnUIThread(Runnable) 4.View.Post(Runnable) 5.View.PostDelayed(Runnabe,long) (想具体学习可以看 Android中UI线程与后台线程交互设计的5种方法) -
service保活
参考自:关于 Android 进程保活,你所需要知道的一切
和怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死?
1.白,启动前台service
2.灰,利用线程漏洞,不同版本的系统手段不一样。
3.黑,监听系统或者其他app的广播唤醒自己的service
还有双service互相监听,联系 厂家加入白名单等等等等,总而言之,把app的性能做好,及时释放内存,才能让进程存活更久。