<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### Service #### 1、談一談Service的生命周期? > * 參考回答:Service的生命周期涉及到六大方法 > * **onCreate()**:如果service沒被創建過,調用startService()后會執行onCreate()回調;如果service已處于運行中,調用startService()不會執行onCreate()方法。也就是說,**onCreate()只會在第一次創建service時候調用,多次執行startService()不會重復調用onCreate(),此方法適合完成一些初始化工作**; > * **onStartComand()**:服務啟動時調用,此方法適合完成一些數據加載工作,比如會在此處創建一個線程用于下載數據或播放音樂; > * **onBind()**:服務被綁定時調用; > * **onUnBind()**:服務被解綁時調用; > * **onRebind()**:服務被重新綁定時調用 > * **onDestroy()**:服務停止時調用; > * 推薦文章: > * [Android組件系列----Android Service組件深入解析](https://www.cnblogs.com/smyhvae/p/4070518.html) #### 2、Service的兩種啟動方式?區別在哪? > * 參考回答:Service的兩種啟動模式 > * **startService()**:通過這種方式調用startService,onCreate()只會被調用一次,多次調用startSercie會多次執行onStartCommand()方法。如果外部沒有調用stopService()或stopSelf()方法,service會一直運行。 > * **bindService()**:如果該服務之前**還沒創建**,系統回調順序為onCreate()→onBind()。如果調用bindService()方法前服務**已經被綁定**,多次調用bindService()方法不會多次創建服務及綁定。如果調用者希望與正在綁定的服務**解除綁定**,可以調用unbindService()方法,回調順序為onUnbind()→onDestroy(); > ![](https://img.kancloud.cn/21/5f/215f12b75124f83e6d5ddecde1dd073c_407x520.jpg) > > * 推薦文章: > * [Android Service兩種啟動方式詳解](https://www.jianshu.com/p/4c798c91a613) #### 3、如何保證Service不被殺死 ? > * 參考回答: > * [如何保證Service不被殺死?](https://juejin.im/post/5e5c5e306fb9a07cbe346d71#heading-136) > * **onStartCommand方式中,返回START\_STICKY或則START\_REDELIVER\_INTENT** > * **START\_STICKY**:如果返回START\_STICKY,表示Service運行的進程被Android系統強制殺掉之后,Android系統會將該Service依然設置為started狀態(即運行狀態),但是不再保存onStartCommand方法傳入的intent對象。此常量適用于不執行命令、但無限期運行并等待作業的媒體播放器(或類似服務)。 > * **START\_NOT\_STICKY**:如果返回START\_NOT\_STICKY,表示當Service運行的進程被Android系統強制殺掉之后,不會重新創建該Service。如果系統在`onStartCommand()`返回后終止服務,則除非有待傳遞的掛起 Intent,否則系統*不會*重建服務。 > * **START\_REDELIVER\_INTENT**:如果返回START\_REDELIVER\_INTENT,其返回情況與START\_STICKY類似,但不同的是系統會保留最后一次傳入onStartCommand方法中的Intent,再次保留下來并再次傳入到重新創建后的Service的onStartCommand方法中。**此常量適用于主動執行應立即恢復的作業(例如下載文件)的服務**。 > * **提高Service的優先級** 在AndroidManifest.xml文件中對于intent-filter可以通過android:priority = "1000"這個屬性設置最高優先級,1000是最高值,如果數字越小則優先級越低,同時適用于廣播; > * **在onDestroy方法里重啟Service** 當service走到onDestroy()時,發送一個自定義廣播,當收到廣播時,重新啟動service; > * **提升Service進程的優先級——啟動前臺Service**, 進程優先級由高到低:前臺進程 一 可視進程 一 服務進程 一 后臺進程 一 空進程,可以使用startForeground將service放到前臺狀態,這樣低內存時,被殺死的概率會低一些; > * **系統廣播監聽Service狀態** > * **將APK安裝到/system/app,變身為系統級應用** > * **注意**:以上機制都不能百分百保證Service不被殺死,除非做到系統白名單,與系統同生共死 #### 4、能否在Service開啟耗時操作 ? 怎么做 ? > * 參考回答: > * Service默認并不會運行在子線程中,也不運行在一個獨立的進程中,它**同樣執行在主線程中(UI線程)**。換句話說,**不要在Service里執行耗時操作,除非手動打開一個子線程**,否則有可能出現主線程被阻塞(ANR)的情況; #### 5、用過哪些系統Service ? > * 參考回答: > ![](https://img.kancloud.cn/73/4c/734c1505d44351f75abb6824c8461a9c_560x306.jpg) > #### 6、了解ActivityManagerService嗎?發揮什么作用 > * 參考回答: ActivityManagerService是Android中最核心的服務 , 主要負責系統中四大組件的啟動、切換、調度及應用進程的管理和調度等工作,其職責與操作系統中的進程管理和調度模塊類似; > * 推薦文章: > * [ActivityManagerService啟動過程](http://gityuan.com/2016/02/21/activity-manager-service/) > * [ActivityManagerService分析——AMS啟動流程](https://blog.csdn.net/caohang103215/article/details/79597260)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看