最近、Androidアプリを作成しています。 アラームマネージャーで保留中の意図を使用しました。 複数の保留中のインテントが必要なので、FLAG_ONE_SHOTを使用しています。 Alarm Managerは上記の間隔でブロードキャストを送信します。また、intentのsetAction()メソッドを使用して、currentTimeMillis()を引数として渡しています。私は対応する放送受信機を持っています。問題は、アプリが閉じられたり、Recentsトレイから削除されたりすると、ブロードキャスト受信者が実行されていないことです。保留中の意図とアラームマネージャー
setAlarm:
private void setupAlarm(int seconds) { AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(getBaseContext(), OnAlarmReceive.class); //PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT); intent.setAction(Long.toString(System.currentTimeMillis())); intent.putExtra("id", ID); PendingIntent pendingIntent = PendingIntent.getBroadcast(ChatActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT); Log.e(TAG, "Setup the Alarm"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, seconds); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);}
放送受信
public void onReceive(Context context, Intent intent) { String id = intent.getStringExtra("id"); Log.e(TAG,"On the verge of deleting the message with id: "+id); SQLiteDatabase database = context.openOrCreateDatabase("/sdcard/userlists.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); database.execSQL("DELETE FROM " + "MESSAGE" + " WHERE " + "id" + "= '" + id + "'"); broadcaster = LocalBroadcastManager.getInstance(context); intent = new Intent(COPA_RESULT); broadcaster.sendBroadcast(intent);}
たManifest.xml
<receiver android:name=".OnAlarmReceive" android:enabled="true" android:exported="true"/>
私を助けてください。アプリが閉鎖されていても、私は仕事をするためにBroadcasterが必要です。
を完了するために従うことができますexampleです。! –
サービスを利用することなく、ブロードキャストを受信できないのですか? もしそうなら、手順を提供できますか? –