簡體   English   中英

Android:在選定的時間啟動服務

[英]Android: Starting a service at a chosen time

我有一個BroadcastReceiver啟動服務。 在此服務中,我有一個AlarmManager,我想每天在每天的特定時間啟動另一個服務。

當我打開應用程序時,會啟動BroadcastReceiver,但如果我在設置的時間啟動BroadCastReceiver,則AlarmManager僅啟動其服務。

如何獲得將當前時間與設置時間進行持續比較的信息,以便在合適的時間自動運行?

在MainActivity.java中

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = new Intent();   
    intent.setAction("com.example.BroadcastPro.MyBroadcastReceiver");   
    sendBroadcast(intent);  
}

在myBroadcastReceiver.java中

public class MyBroadcastReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        Intent  i=new Intent(context,SetPeriodicService.class);    
        context.startService(i);
    }
}

在SetPeriodicService.java中

public int onStartCommand(Intent intent, int flags, int startId)    
{
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.HOUR_OF_DAY, 12);
    calendar.set(Calendar.MINUTE, 30);  

    Intent i=new Intent(this,MyService.class);  
    PendingIntent alarmIntent = PendingIntent.getService(this, 0, i, 0);
    AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmManager.INTERVAL_DAY, alarmIntent);

    return super.onStartCommand(intent, flags, startId);    
}

在SetPeriodicService.java中的alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmManager.INTERVAL_DAY, alarmIntent); 您需要更改為alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmMgr.INTERVAL_DAY, alarmIntent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM