Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 解決Android後台清理APP後,程序自動重啟的問題,androidapp

解決Android後台清理APP後,程序自動重啟的問題,androidapp

編輯:關於android開發

解決Android後台清理APP後,程序自動重啟的問題,androidapp


  最近解決了一個Android APP的bug,發現APP在被後台清理後,會自動重啟。現象很奇怪,有的手機(HTC)後台清理後,程序會再次重啟,而有的手機(小米)則不會。猜想可能是小米手機內部做了處理,當執行後台清理後,對應的APP不會再重啟了。

  Debug後發現,APP內部有一個Service,在Service的onStartCommand函數中,返回值是一個int。主要的兩個值是START_STICKY和START_NOT_STICKY。START_STICKY的含義是如果service進程被kill掉,保留service的狀態為開始狀態,但不保留遞送的intent對象。隨後系統會嘗試重新創建service,由於服務狀態為開始狀態,所以創建服務後一定會調用onStartCommand(Intent,int,int)方法。如果在此期間沒有任何啟動命令被傳遞到service,那麼參數Intent將為null。而START_NOT_STICKY是“非粘性的”。使用這個返回值時,如果在執行完onStartCommand後,服務被異常kill掉,系統不會自動重啟該服務。

  我們的程序設置的是START_STICKY,程序擇機重啟時,一些變量沒有初始化,導致crash。改為START_NOT_STICKY後,問題解決了。但是還剩下一個問題,老大發現微信的APP不管在HTC還是小米的機器上,執行後台清理後,其Service都還在,這就很奇怪了,同事猜,可能是手機ROM中對特定的程序設置了白名單。個人覺得不大可能,但問題在於,如果所有的APP coder都可以將程序設置為不會被kill掉,為什麼僅僅是微信不被kill?還是我們技術不過硬,沒有找到不被系統kill的方法?

  總之,Android系統好亂,還是蘋果大法好,大家都按規矩辦事。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved