Можно ли убить BroadcastReceiver с ОС Android для освобождения памяти? - PullRequest
0 голосов
/ 05 апреля 2011

Мое приложение смотрит на поступившую электронную почту в клиенте 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 ]

2 голосов
/ 05 апреля 2011

Любой BroadcastReceiver не появляется постоянно в памяти. Он получает экземпляр, когда намерение получено, и уничтожается после завершения onReceive() метода.

2 голосов
/ 05 апреля 2011

Приемник работает только тогда, когда он вызывается, поэтому нет.Обязательно держите время выполнения менее 5 секунд.

Однако ваша служба может быть в любой момент отключена.Вы можете убедиться, что он работает, опубликовав текущее уведомление, но, вероятно, не следует.Если он был убит из-за недостатка памяти, он будет перезапущен позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...