AlarmManager
を使用して、定義済みの時間にタスクを実行するようにスケジュールを設定しようとしています。 AlarmManager
は私のアプリケーションから初期化されており、Broadcast
イベントがonReceive()
のメソッド内で受信されたときに実行されます。を '15分後'と呼ぶようにcontext.startService(webServiceIntent);
を使用してサービスを呼び出します。 ;何らかの理由でそれが機能していません。それはすべてそれがそれを停止するPendingIntent
を停止します。AlaramManagerが定義済みの時間の後にタスクを実行するようにスケジュールを設定する
//Initiliazing AlarmManager from my app
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
pendingIntent = PendingIntent.getBroadcast(this, 0, getLocationPollerIntent(), 0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), Constant.LOCATION_POLLING_PERIOD, pendingIntent);
//onReceive Method of BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent) {
Intent webServiceIntent = new Intent(context, LocationNotificationService.class);
webServiceIntent.putExtra("UPDATED_LOCATION", loc);
context.startService(webServiceIntent);
}
//Inside LocationNotificationService to reschedule the PendingIntent - This PendingIntent never get called
protected void onHandleIntent(Intent intent) {
c.set(Calendar.HOUR_OF_DAY, 13);
c.set(Calendar.MINUTE, 35);
c.set(Calendar.SECOND, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, getLocationPollerIntent(), PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, c.getTimeInMillis(), Constant.LOCATION_POLLING_PERIOD, pendingIntent);
}
ええと、私はそれを実際に実行して、AlarmManager.ELAPSED_REALTIME_WAKEUPをAlarmManager.RTCに置き換えました。しかし、今問題は、この行の中では、WakefulIntentService PendingIntent.getBroadcast(this、0、getLocationPollerIntent()、PendingIntent.FLAG_UPDATE_CURRENT)です。 – Waqas
@Waqas: 'getLocationPollerIntent()'は別の 'Intent'を返しています。これは余分なものとは異なるものです。 – CommonsWare
html可視的なアクティビティから呼び出されたとき、およびこの覚醒したインメンツサービスから呼び出されたときにgetApplicationContext()が同じ/異なる値を返すかどうか知っていますか?その間に、異なる値を返す場合は、この意図を両方のために同じようにする方法がありますか? – Waqas