第二波,繼續(xù)繼續(xù),大家多多指教。
題目
- 自定義view
- service的基礎(chǔ)知識(shí)
- thread在applicition,activity,service中創(chuàng)建有什么區(qū)別
- thread,activity,service之間怎么互相通信
- service保活
答案
- 自定義view
自定義view有點(diǎn)深,有點(diǎn)復(fù)雜。給幾篇參考文章,大家根據(jù)自己需求回答吧。
郭霖大神的文章,一共四篇,講得很詳細(xì)
教你搞定Android自定義View - service的基礎(chǔ)知識(shí)
啟動(dòng)服務(wù)有兩種方法,與此對(duì)應(yīng)的就是兩種生命周期。
通過(guò)startService啟動(dòng)服務(wù)。依次調(diào)用onCreate -> onStartCommand
通過(guò)stopService關(guān)閉服務(wù)。調(diào)用onDestroy方法。無(wú)論之前服務(wù)被startService了多少次,都只需要一次stopService就能關(guān)閉服務(wù)。
通過(guò)bindService啟動(dòng)服務(wù)。依次調(diào)用onCreate-> onBind
通過(guò)unbindService關(guān)閉服務(wù)。調(diào)用onUnbind -> onDestory方法
反復(fù)調(diào)用bindService不會(huì)多次生成Service實(shí)例。通過(guò)bind綁定的服務(wù),與調(diào)用者可以說(shuō)是綁定在一起,同生共死的。當(dāng)調(diào)用者被銷(xiāo)毀,服務(wù)也會(huì)立刻終止。
thread在applicition,activity,service中創(chuàng)建有什么區(qū)別
如果在activity中創(chuàng)建thread,需要在ondestory方法中停止線(xiàn)程。在application和service中也是同理的。
于是乎在哪里創(chuàng)建thread取決于你希望你的thread存活多久。相比來(lái)說(shuō),activity中的thread存活的時(shí)間最短,activity跳轉(zhuǎn)時(shí)就會(huì)結(jié)束,application次之,service可以一直在后臺(tái)運(yùn)行,所以存活的時(shí)間最長(zhǎng)。thread,activity,service之間怎么互相通信
activity和service之間:
1.binder對(duì)象 2.廣播
activity或service和thread通信:
1.handler 2.AsyncTask 3.Activity.runOnUIThread(Runnable) 4.View.Post(Runnable) 5.View.PostDelayed(Runnabe,long) (想具體學(xué)習(xí)可以看 Android中UI線(xiàn)程與后臺(tái)線(xiàn)程交互設(shè)計(jì)的5種方法)service保活
參考自:關(guān)于 Android 進(jìn)程?;?,你所需要知道的一切
和怎么讓 Android 程序一直后臺(tái)運(yùn)行,像 QQ 一樣不被殺死?
1.白,啟動(dòng)前臺(tái)service
2.灰,利用線(xiàn)程漏洞,不同版本的系統(tǒng)手段不一樣。
3.黑,監(jiān)聽(tīng)系統(tǒng)或者其他app的廣播喚醒自己的service
還有雙service互相監(jiān)聽(tīng),聯(lián)系 廠(chǎng)家加入白名單等等等等,總而言之,把a(bǔ)pp的性能做好,及時(shí)釋放內(nèi)存,才能讓進(jìn)程存活更久。