Запаздывающее приложение Android BroadCastReceiver - PullRequest
1 голос
/ 20 января 2012

У меня проблема с BroadcastReceiver, которую я использую в своей деятельности.Я на самом деле делаю это:

В onCreate():

        receiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("finish")) {
             // some code
            }               
        }
    };
    registerReceiver(receiver, intentFilter);

и в onResume() и onPause() Я делаю это:

@Override
public void onResume(){
    super.onResume();
    MyCollectionList.this.registerReceiver(receiver, intentFilter);
}

@Override
public void onPause(){
    super.onPause();
    MyCollectionList.this.unregisterReceiver(receiver);
}

где intentFilter:

IntentFilter intentFilter = new IntentFilter("finish");

и когда я делаю это в 6 действиях, где мне нужно добавить этот широковещательный приемник, мое приложение начинает отставать и работать медленнее, чем раньше.

Так есть лиДругой лучший способ следить за фильтрами намерений, не замедляя приложение / или лучший способ в моей ситуации.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 01 июня 2012

Вместо регистрации получателя в контексте действия, зарегистрируйте его в контексте вашего приложения в первом упражнении, как показано ниже:

getApplication (). RegisterReceiver (receiver, intentFilter);

Таким образом, даже если ваша деятельность перейдет в состояние «паузы», ваш приемник останется активным, так как ваше приложение будет работать в фоновом режиме.

Надеюсь, это поможет.

1 голос
/ 20 января 2012
  • не регистрируйте свой вещательный приемник в onCreate.Регистрация в onResume и отмена регистрации в onPause безопасны, и в вашем случае достаточно
  • . Вы должны выполнять обработку с большой нагрузкой в ​​методе приемника.Android предлагает 10-секундное окно для выполнения того, что вы хотите в своем приемнике, в противном случае он будет объявлен как ANR
  • Чтобы избежать задержки, загрузите свою обработку в новый рабочий поток
...