2016-03-21 10 views
1

Это мой код.SCREEN_OFF BroadcastReceiver не работает

public class MyActivity extends Activity { 
    ... 
    @Override 
    protected void onStart() { 
     super.onStart(); 

     IntentFilter intentFilter = new IntentFilter(); 
     intentFilter.addAction("com.my.ACTION"); 
     intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 

     registerReceiver(broadcastReceiver, intentFilter); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 

     unregisterReceiver(broadcastReceiver); 
    } 

    ... 

    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 

      if ("com.my.ACTIOIN".equals(action)) { 
       updateMessageInformation(intent); 
       updateDialog(); 
      } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { 
       finish(); 
      } 
     } 
    }; 
    ... 
} 

com.my.ACTION обнаружен и работает правильно

Но Intent.ACTION_SCREEN_OFF(android.intent.action.SCREEN_OFF) не обнаруживается, когда экран погаснет.

Этот Activity начинается с Service (начало с другого ресивера).

Что у меня было бы не так?

+1

Вы отмените регистрацию на onDestroy? Может быть, активность уничтожена до того, как намерение отправлено, чтобы оно не могло быть получено действием? – galex

+0

Я отменил регистрацию приемника на onStop. –

+0

@galex Спасибо. Перемещая unregister в onDestroy, он работает правильно. –

ответ