特定のタスクを実行するサービスを作成しようとしています。簡単にするために単純なトースト メッセージを作成し、将来のランダムな時間に再度実行するようにスケジュールします。
サービスの最初のインスタンスを実行するために時間遅延のあるアラーム マネージャを使用しています。その後、サービスは、サービスの再実行をトリガーするブロードキャストの新しいアラームを設定します。
私が取ったアプローチは次のとおりです。
- メイン アクティビティ 指定された間隔でブロードキャストを実行するようにアラームを設定します
- ブロードキャストが受信され、ブロードキャストを再度実行するための新しいアラームが設定されてから、必要なサービスが実行されます。
- Required Service はタスクを完了し、シャットダウンします。
これが実行可能なアプローチであるかどうかについて、誰かがアドバイスを提供してもらえますか?
ブロードキャストを受信できないようです。
マニフェスト ファイルに受信者を登録しました。
アドバイスをいただければ幸いです。
public class MainActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
CustomAlarmManager am = new CustomAlarmManager(context);
am.setNextSchedule((long) StaticMethod.getRandomTimeDelay());
}
}
public class CustomAlarmManager extends Activity
{
public CustomAlarmManager(Context context)
{
alarmMngr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
intent = new Intent(context, CustomReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
}
setNextSchedule(long timeDelay)
{
alarmMngr.set(AlarmManager.RTC_WAKEUP, timeDelay, pendingIntent);
}
}
public class CustomReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Intent i = new Intent(context, CustomService.class);
CustomAlarmManager am = new CustomAlarmManager(context);
am.setNextSchedule((long) getRandomTimeDelay());
context.startService(i);
}
}
public class CustomService extends Service
{
@Override
public int onStartCommand(final Intent intent, int flags, int startId)
{
displayToastMessage();
stopService(intent);
}
}
Manifest File:
<receiver android:name="packageName.CustomReceiver" android:enabled="true">