91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

四大組件(2) - Service

發布時間:2020-07-22 16:02:55 來源:網絡 閱讀:119 作者:lm8751 欄目:移動開發

繼承關系

Context -> ContextWrapper -> Service 位于 android.app 包中

生命周期?

onCreate():首次創建服務時調用,該方法只調用一次。

onStartCommand():當另一個組件通過調用startService()請求啟動服務時,系統將調用此方法。

onDestroy():當服務不再使用且將被銷毀時,系統將調用此方法。

onBind():當調用bindService()與服務綁定時,調用此方法。

onUnbind():當調用unbindService()與服務解綁時,調用此方法。

onRebind():當舊的組件與服務解綁后,另一個新的組件與服務綁定,onUnbind()返回true時,系統將調用此方法。

參考:https://www.jianshu.com/p/cc25fbb5c0b3



重要屬性?

android:enabled=[“true | false”]

是否可實例化,默認true 。如設置false Service將不可用

android:exported=[“true |false”]

是否允許跨進程調用,默認值跟filter是否有子元素有關,filter子元素個數為0,默認值為false ,否則true

android:permission=string

調用此Service需要的權限,可自定義權限增加Service安全。如沒設置,此Service就沒權限要求。

android:process=:String

Service指定運行的進程。未設置默認為應用主進程。如設置,

首字母大寫 代表此新進程為本應用私有進程,其它應用不可訪問。

首字母小寫 代表此進程為全局進程(公共),其它應用可訪問

android:isolatedProcess=[“true | false”]

如果設置為true,這個服務將運行在專門的進程中,這個進程從系統的剩余部分獨立出來,它自身沒有權限。同它唯一的通信方式就是通過這個Service APIbindingstarting)。?



啟動方式

1.StartService 同一個Service Start多次,onCreate()執行一次,onStartCommand()執行多次

2.BindService 同一個Service bind多次, onCreate()執行一次,onBind()也執行一次

生命周期調用

1)啟動Service服務

單次:startService() —> onCreate() —> onStartCommand()

多次:startService() —> onCreate() —> onStartCommand() —> onStartCommand()

2)停止Service服務

stopService() —> onDestroy()

3)綁定Service服務

bindService() —> onCreate() —> onBind()

4)解綁Service服務

unbindService() —> onUnbind() —> onDestroy()

5)啟動綁定Service服務

startService() —> onCreate() —> onStartCommand() —> bindService() —> onBind()

6)解綁停止Service服務

unbindService() —> onUnbind()?

?stopService()? —> onDestroy()

當同時使用startServicebindServiceService關閉需unbindServicestopService同時調用(調用順序無所謂),才能終止Service.

7)解綁綁定Service服務

unbindService() —> onUnbind(ture) —> bindService() —> onRebind()


Service關閉方法

1.stopSelf();

2.stopSelfResult();

3.stopService()



四、進程保活

1、關鍵2

  • 提高進程的優先級

  • 在進程被kill之后能夠喚醒

2、進程優先級劃分

  • 1.前臺進程 (Foreground process)

  • 2.可見進程 (Visible process)

  • 3.服務進程 (Service process)

  • 4.后臺進程 (Background process)

  • 5.空進程 (Empty process)

這是一種粗略的劃分,進程其實有一種具體的數值,稱作oom_adj,注意:數值越大優先級越低


3、提高進程的優先級

  • 配置文件提升Service優先級和app系統級別

<service

android:name=

android:exported =false

android:persistent=true //提升應用到系統級

/>

<intent-filter android:priority=1000″/>//提高優先級 1000是最高優先級,數字越小,優先級越低

</service>

  • 切后臺 ->? 彈通知

隱藏通知欄iocn

對于 API level < 18 :調用startForeground(ID new Notification()),發送空的Notification ,圖標則不會顯示。

對于18 <= API level <25:在需要提優先級的service A啟動一個InnerService,兩個服務同時startForeground,且綁定同樣的 IDStop InnerService ,這樣通知欄圖標即被移除。

參考:https://blog.csdn.net/xutao123111/article/details/78994383

8.0上述方案無效,會顯示”有一個應用正在后臺使用” ,想要去除,官方建議使用JetPack-WorkManager https://www.jianshu.com/p/de19752f159c

  • 鎖屏 ->? 1像素界面

注冊廣播監聽鎖屏和解鎖事件, 鎖屏后啟動一個1像素的透明Activity,這樣直接把進程的oom_adj數值降低到00android進程的最高優先級。 解鎖后銷毀這個透明Activity

4、進程被kill

  • 系統內存不足殺死情況

onStartCommand()返回值修改為START_STICKY,在onDestory重啟(不保證100%重啟成功)

Service 第一次被異常殺死后會在5秒內重啟,第二次被殺死會在10秒內重啟,第三次會在20秒內重啟,一旦在短時間內 Service 被殺死達到5次,則系統不再拉起。

進程被取得 Root 權限的管理工具或系統工具通過 forestop 停止掉,無法重啟。

  • 用戶手動使用手機自帶清理工具和第三方app360,獵豹清理大師等)

引導用戶添加手機白名單

  • ? 其它

?? ? 依賴push、第3方應用喚醒、廠家白名單等


備注:

對于Android6.0以及以下的大部分機型還是有效果的,但是Android7.0Android8.0基本上所有機型全部陣亡,大部分后臺進程在鎖屏后無法存活超過20分鐘

測試結果顯示,oppo/vivo這兩家廠商進程保活最困難,小米和三星比較寬松。其他的機型居中。


參考

https://www.jianshu.com/p/53c4d8303e19

https://blog.csdn.net/qq_37199105/article/details/81224842




.其它

1. bindServicestartService區別

  • 生命周期不同? bindService -> onBind() ? startService->onStartCommand(),?

  • 方法調用次數不同? 多次startService onStartCommand會執行多次 ,而bindService只會指定一次

  • 關閉服務? ? bindService開啟服務以后,與activity存在關聯,退出時必須調用unbindService方法,否則會報ServiceConnection泄漏的錯誤。而Service不用。

2.IntentService

優點:

  • 省去在 Service 中手動開線程的麻煩

  • 當操作完成時,我們不用手動停止 Service

原理 (單線程HandlerThread? 隊列串行處理)

  • IntentService采用Handler & HandlerThread方式

  • 所有請求都在一個單線程中,不會阻塞應用程序的主線程(UI Thread),同一時間只處理一個請求

  • 可啟動 IntentService 多次,而每一個耗時操作會以工作隊列的方式在IntentService onHandleIntent 回調方法中執行,并且,每次只會執行一個工作線程,執行完第一個再執行第二個,以此類推。

  • IntentService 會自動停止,而不需要我們去手動控制

參考:https://www.jianshu.com/p/5a32226d2ce0


3.Service ThreadApplication的區別

????????????????????????????????????Thread ? ? ? ? ? ? ? ? ? ? ? ? ? ? Service ? ? ? ? ? ? ? ? ? ? ? Application

是否可設置獨立進程? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

是否能管理生命周期? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

是否能與其它組件通信? ? ? ?較麻煩 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 較易? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?一般





? ?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇坪县| 图片| 巴林左旗| 达孜县| 五河县| 西贡区| 深州市| 平昌县| 海林市| 汉寿县| 元江| 鸡东县| 柳江县| 丰镇市| 巴中市| 南宫市| 海门市| 义马市| 武定县| 资阳市| 南充市| 丹阳市| 寻甸| 双江| 万源市| 韶关市| 德兴市| 遂川县| 灌云县| 崇阳县| 平定县| 昆山市| 那坡县| 武穴市| 湖北省| 泰和县| 威信县| 齐齐哈尔市| 故城县| 蒲江县| 隆化县|