0

私は、電話機のロック解除イベントを監視するブロードキャストを持っています。しかし、アプリのプロセスが終了し、メモリがなくなると、電話のロックを解除してもReceiverが起動されず、代わりにAndroidスタジオでそのアプリケーションの新しいプロセスが作成されていることがわかります。プロセスが作成されたときにブロードキャストがトリガーされない

もう一度ロックしてロックを解除すると、プロセスが既に実行されているので、BroadcastReceiverがトリガーされていることがわかります。

<receiver 
     android:name=".UserPresentBroadcastReceiver" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.USER_PRESENT" /> 
     </intent-filter> 
    </receiver> 

放送受信機:

public class UserPresentBroadcastReceiver extends BroadcastReceiver { 

    private static final String TAG = UserPresentBroadcastReceiver.class.getSimpleName(); 
    @Override 
    public void onReceive(Context arg0, Intent intent) { 

     Log.d(TAG, "onReceive: Unlock Boradcast received"); 
     if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) { 
      Toast.makeText(arg0, "You just unlocked the device",  Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

私はこの動作を理解することができません。これはデフォルトの動作ですか?

答えて

0

このブロードキャストレシーバは、アクティビティ(または、バックグラウンドで常に聴いているサービス)に登録および登録解除する必要があります。 マニフェストエントリは機能しません。

+0

これは機能します。実際に初めてデバイスのロックを解除すると、プロセスが作成されます。 2回目に私はデバイスのロックを解除し、私にトーストメッセージを表示しました。そして、2回目から、いつもうまく動作します。再びメモリから取り除かれた後、最初のアンロックは放送受信機をトリガしない。 – kirtan403

+0

=>正しく動作しません。 –

関連する問題