2010-11-23 70 views
6

如何在每个指定的时间(例如每天5AM)执行一个动作(也许是一个意图)?它必须在设备重新启动后保留,类似于cron的工作方式。如何在Android中设置持久性/常规计划?

我不确定我是否可以使用AlarmManager这个,或者我可以吗?

+0

是的,你可以使用它。 – techiServices 2010-11-23 05:25:41

回答

10

如果您希望在设备重新启动后保留它,您必须在设备重新引导后安排警报。

你需要有RECEIVE_BOOT_COMPLETED许可,您的AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

一个BroadcastReceiver同样也需要捕捉的意图ACTION_BOOT_COMPLETED

<receiver android:name=".BootCompletedReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver> 

最后,在覆盖的onReceive方法你广播接收器。

public class BootcompletedReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    //set alarm 
    } 
} 

编辑:看AlarmManager的setRepeating方法来安排 '的Android的cron'。

+0

如果您的应用程序被用户或Android系统杀死,那么这将无济于事。一旦这样做,您的警报就会被取消注册,而且您将永远不会再被调用。 – Guy 2012-12-17 20:13:11

1

使用BuzzBox SDK你可以安排在App cron作业做:

SchedulerManager.getInstance() 
.saveTask(context, "0 8-19 * * 1,2,3,4,5", YourTask.class); 

其中, “0 8-19 * * 1,2,3,4,5” 是cron字符串会从上午8点到晚上7点,星期一到星期五,每小时运行一次任务。 你的任务可以是任何你想要的,你只需要实现一个doWork方法。该库将负责重新启动时的重新计划,获取唤醒锁和重试错误。

More info about the BuzzBox SDK here...