如何每24小时在android中运行代码

时间:2018-08-11 09:11:23

标签: java android android-calendar

在我的应用程序中,我希望每个用户每 24小时运行一次代码!
例如:如果在 12:00 am 显示Toast消息,然后在明天12:00 再次显示此Toast消息。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

尝试并使用JobScheduler类用于这种用例,仅在API级别21以上才受支持

https://medium.com/google-developers/scheduling-jobs-like-a-pro-with-jobscheduler-286ef8510129

另一种替代方法是使用Firebase JobDispatcher,但这依赖于Google Play服务SDK。

https://developer.android.com/topic/performance/scheduling

上面的链接介绍了所有其他替代方法。

快乐地探索.. !!

答案 1 :(得分:1)

您需要注册一个警报,请尝试以下

第1步:注册警报。

private void registerAlarm(Context context, int requestCode) {
    int HOUR = 60 * 60 * 1000;
    Intent intent = new Intent(context, DailyAlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
            context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
            + 24 * HOUR, pendingIntent);
}

例如从活动onCreate调用registerAlarm方法。 理想情况下,我们应该在应用安装时进行注册

registerAlarm(this, 1);

第2步:创建BroadcastReceiver。

public class DailyAlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
       Log.d("DailyAlarmReceiver","Received");
    }
}

第3步:在清单文件中添加收件人

<receiver
      android:name=".DailyAlarmReceiver"
      android:exported="true" />