2012-04-11 200 views
1

我正在使用BroadcastReceiver與我的應用程序接收SMS消息,然後根據消息的內容編輯數據庫。該應用程序在打開時工作正常,但如果我長時間保持開啓狀態,它會自動關閉應用程序,它會在收到消息時強制關閉(我認爲BroadcastReciever仍在工作,但應用程序的其餘部分關閉)。有沒有辦法阻止應用程序關閉,或在收到短信時恢復它?停止關閉Android應用程序

感謝

回答

1

如果你想接收器是持久的,你應該考慮使用Service而不是標準Activity爲您的應用。存在於標準活動中的BroadcastReceiver被認爲是前臺服務只有當處理onReceive只要執行返回Activity恢復其正常進程優先級並且可以由系統根據需要終止。

來自:BroadcastReceiver

流程生命週期

當前正在執行一個BroadcastReceiver(即,當前運行在其的onReceive(上下文代碼,意圖)方法)的方法,被認爲是作爲一個前臺進程,除非存在極大的內存壓力,否則系統將繼續運行。

從onReceive()返回後,BroadcastReceiver不再處於活動狀態,其宿主進程與其中運行的任何其他應用程序組件一樣重要。這一點尤其重要,因爲如果該進程僅託管BroadcastReceiver(用戶從未或最近未與之交互過的應用程序的常見情況),那麼在從onReceive()返回時,系統將認爲其進程是空的並積極地殺死它使資源可用於其他更重要的流程。

這意味着,對於長時間運行的操作,你會經常一起使用的服務以及廣播接收器,以保持包含過程積極爲您的操作的全部時間。

有關創建服務的詳細信息:

的開發者指南
有關如何創建服務,請閱讀Services developer guide的詳細討論。

+0

爲了將其轉化爲服務做我只需要更改「活動」到XML文件中的「服務」? – 2012-04-11 23:06:31

+0

@TrentWalls不,我使用Android文檔的Services頁面中的鏈接更新了我的答案,該鏈接中有一些關於創建服務的信息和指南。應該指出的是,服務和活動是基本上不同的功能單元。 – 2012-04-11 23:09:41

相關問題