你将使用的解决方案取决于每次执行函数之间需要等待多长时间。
如果你需要等待的时间超过10分钟,我建议使用AlarmManager
。
Date when = new Date(System.currentTimeMillis());
try {
Intent someIntent = new Intent(someContext, MyReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context,
0,
someIntent,
PendingIntent.FLAG_CANCEL_CURRENT
);
AlarmManager alarms = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE
);
alarms.setRepeating(
AlarmManager.RTC_WAKEUP,
when.getTime(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
pendingIntent
);
} catch(Exception e) {
e.printStackTrace();
}
一旦您广播了上述 Intent
,您可以通过实现一个 BroadcastReceiver
来接收您的 Intent
。请注意,这需要在应用清单中注册或通过 context.registerReceiver(receiver, intentFilter);
方法注册。有关 BroadcastReceiver
的更多信息,请参阅官方文档。(点击此处)。
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("MyReceiver: here!")
}
}
如果你等待的时间少于10分钟,我建议使用一个 Handler
。
final Handler handler = new Handler();
final int delay = 1000;
handler.postDelayed(new Runnable() {
public void run() {
System.out.println("myHandler: here!");
handler.postDelayed(this, delay);
}
}, delay);