サービスを開始するように AlarmManager オブジェクトを設定しました。
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); //context = getApplicationContext();
Intent alarmServiceIntent = new Intent(context, AlarmHandlingService.class);
alarmServiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
alarmServiceIntent.putExtra("alarmId", _id); //_id is a "long" value
PendingIntent pi = PendingIntent.getService(context, (int)_id, alarmServiceIntent, 0);
am.set(AlarmManager.RTC_WAKEUP, time, pi);
のonStartCommand(..., ..., ...)
は、AlarmHandlingService
機能する必要があるときに機能する必要があります。問題はありません:
public int onStartCommand(Intent intent, int flags, int startId)
{
long alarmId = intent.getLongExtra("alarmId", -1);
Intent someActivityIntent = new Intent(this, SomeActivity.class);
someActivityIntent.putExtra("alarmId", alarmId);
someActivityIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(someActivityIntent);
return START_NOT_STICKY;
}
しかし、その後、新しいアクティビティ (SomeActivity) を開いて を呼び出すstopService(...)
と、サービスは停止しません。
stopService(new Intent(context, AlarmHandlingService.class)); //context = getApplicationContext();
これは、マニフェストでのサービス クラスの宣言です。
<service android:name="***myPackageName***.AlarmHandlingService"></service>
デバッグしようとしましたが、 を呼び出したときにクラスのregisterReceiver (BroadcastReceiver receiver, IntentFilter filter)
関数が呼び出されることに気付きました。android.content.ContextWrapper
stopService