編輯:關於Android編程
Service
http://android.xsoftlab.net/reference/android/app/Service.html
IntentService
http://android.xsoftlab.net/reference/android/app/IntentService.html
IntentService
Service
自動啟動子線程,onHandleIntent為子線程
不自動啟動子線程,運行在主線程裡面,耗時操作易產生ANR(當然可以自己在Service裡面啟動線程來修復ANR)
自動停止Service(處理完工作隊裡面的工作後自動停止)
不自動停止Service,需主動停止Service
不適合作為常駐Service(需要一直運行的Service)
適合作為常駐Service
總結:能用IntentService的場景就盡量用IntentService,而不要用Service
Service作為常駐Service時,盡量指定process來脫離Application的進程,作為一個單獨的進程(RemoteService)
獨立Service進程原因:Service進程優先級高於後台進程,當應用被切換到後台後,會導致資源不容易被回收(如果Service進程沒有獨立出來,系統會認定該應用進程為Service進程)。
方法:設置Service的process屬性為“:remote”(“remote”為service process name,可以自定義)
例如:
驗證Service已作為Remote Service的方法:adb shell ps查看進程
例如:
Q1. 進程間的數據是獨立的,不能共享
例如:通過應用主進程往SharedPreference存儲的數據,發現在Service裡面讀取到的數據不對。
A1.
換一種數據可以共享的方式,例如:指定SharedPreference的mode為MODE_MULTI_PROCESS,ContentProvider共享數據等等
Q2. 獲取Service時出錯
mBoundService= ((LocalService.LocalBinder)service).getService();
A2.
mIPowerManager= IPowerManager.Stub.asInterface(service);
Q3. 如果希望調用服務裡的接口
A3. 通過binder通信(可以參考AndroidFramework裡面的Service是如何提供接口的,原理是一樣的)
http://android.xsoftlab.net/reference/android/app/Service.html#LocalServiceSample
http://android.xsoftlab.net/reference/android/app/Service.html#RemoteMessengerServiceSample
一 概述本文是Android導航分組列表系列上,因時間和篇幅原因分上下,最終上下合璧,完整版效果如下: 上部殘卷效果如下:兩個ItemDecoration,一個
QQ群一個多人聊天交流的公眾平台,群主在創建群以後,可以邀請朋友或者有共同興趣愛好的人到一個群裡面聊天。這時群主需要一些朋友來幫你管理QQ群,這些朋友就是管
SharePoint Content Types working with Word這個文檔是按照SharePoint 2010 Development with Vis
在上一篇文章中介紹了使用非RxJava環境下,使用Handler機制SyncBarrier的特性實現預加載功能的方法。在RxJava的環境下使用BehaviorSubje