0

プロジェクトでサービスを作成しましたが、2 分ごとに開始したいと考えています。次のコードを使用していますが、正しく動作しません。

public class ScheduleSync extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

        Intent i = new Intent(context, StartMyServiceReceiver.class);
        PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,PendingIntent.FLAG_CANCEL_CURRENT);
        Calendar cal = Calendar.getInstance();
        service.setInexactRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), 60000*2, pending);

    }

}



public class StartMyServiceReceiver extends BroadcastReceiver
{    
    public void onReceive(Context context, Intent intent) 
    {
        Toast.makeText(context, "receive broadcast", Toast.LENGTH_LONG).show();
        Log.d("StartMyServiceReceiver", "receive broadcast");
        Intent service = new Intent(context, myservice.class);
        context.startService(service);
    }
}

この問題に関して私を助けてください。タスクマネージャーを見ると、myservice がバックエンドで実行されています。

4

1 に答える 1

0

AlarmManagerを使用する理由

使用するだけThread.sleep(xxxx)です:

public class ScheduleSync extends BroadcastReceiver{
    private Context context;
    private void startOtherService(){
        Intent i = new Intent(context, StartMyServiceReceiver.class);
        context.startService(i);
    }
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        this.context = context;
        new Thread(new Runnable(){
            public void run(){
                try{
                    Thread.sleep(2*60*1000);
                    startOtherService();
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

}
于 2013-03-28T06:41:43.147 に答える