2011-04-05 53 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秒内保持运行时间。

但是,您的服务可能随时被杀死。您可以确保通过发布正在进行的通知来继续运行,但您可能不应该这样做。如果它在内存不足的情况下死亡,它将在稍后重新启动。

相关问题