2011-04-05 85 views
0

我的應用程序看看這種方式在K9客戶arriveed電子郵件...BroadcastReceiver是否可以從Android操作系統中殺死以釋放內存?

1)AndroidManifest:

<receiver 
     android:name="com.myapp.K9MailReceiver"> 
     <intent-filter> 
      <action 
       android:name="com.fsck.k9.intent.action.EMAIL_RECEIVED" /> 
      <data 
       android:scheme="email" /> 
     </intent-filter> 
    </receiver> 

2)我的廣播接收器:

public class K9MailReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     final Intent serviceIntent = new Intent(context, MyService.class); 
     serviceIntent.putExtra(Prepare.MAIL, intent.getExtras()); 
     context.startService(serviceIntent); 

    } 
} 

我的問題: Android可能會決定殺死我的K9MailReceiver類來釋放內存嗎?如果是,如何防止這種情況發生?

回答

2

任何BroadcastReceiver都不會持續出現在內存中。它在獲得意圖時被實例化,並且在onReceive()方法完成後被殺死。

+0

請注意,您仍然可以將數據存儲爲靜態數據,如https://stackoverflow.com/questions/3162715/save-data-in-broadcast-receiver中所述 – domen 2016-03-18 16:59:37

2

接收器只在被調用時才運行,所以沒有。請務必在5秒內保持運行時間。

但是,您的服務可能隨時被殺死。您可以確保通過發佈正在進行的通知來繼續運行,但您可能不應該這樣做。如果它在內存不足的情況下死亡,它將在稍後重新啓動。

相關問題