1

特定のタスクを実行するサービスを作成しようとしています。簡単にするために単純なトースト メッセージを作成し、将来のランダムな時間に再度実行するようにスケジュールします。

サービスの最初のインスタンスを実行するために時間遅延のあるアラーム マネージャを使用しています。その後、サービスは、サービスの再実行をトリガーするブロードキャストの新しいアラームを設定します。

私が取ったアプローチは次のとおりです。

  1. メイン アクティビティ 指定された間隔でブロードキャストを実行するようにアラームを設定します
  2. ブロードキャストが受信され、ブロードキャストを再度実行するための新しいアラームが設定されてから、必要なサービスが実行されます。
  3. 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">
4

0 に答える 0