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

來源:互聯網
上載者:User

解決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系統好亂,還是蘋果大法好,大家都按規矩辦事。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.