BroadcastReceiver是否可以从Android操作系统中删除以释放内存?

时间:2011-04-05 13:07:27

标签: android broadcastreceiver

我的应用程序以这种方式查看K9客户端中收到的电子邮件...

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 个答案:

答案 0 :(得分:2)

接收器仅在被调用时运行,所以没有。确保运行时间不超过5秒。

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

答案 1 :(得分:2)

任何BroadcastReceiver都不会在内存中出现。它在收到intent时被实例化,并在onReceive()方法完成后被杀死。