在我的 Android 项目中,我有一个需要每分钟运行一次代码的活动。我该怎么做?当活动正在运行且未暂停(即用户正在查看它而不是其他活动)时,代码需要每分钟运行一次。同时,在应用程序最小化时不应运行。当活动结束时,代码应停止运行。
有人知道如何编写这个代码吗?
谢谢。
有人知道如何编写这个代码吗?
谢谢。
android.intent.action.TIME_TICK
广播。private BroadcastReceiver receiver;
@Overrride
public void onCreate(Bundle savedInstanceState){
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.TIME_TICK");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO : codes runs every minutes
}
}
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
广播动作: 当前时间已更改。每分钟发送一次。您无法通过在清单中声明的组件接收此内容,只能通过使用Context.registerReceiver()显式注册来接收它。
这是一个受保护的意图,只能由系统发送。
常量值:"android.intent.action.TIME_TICK"
更新
如Joakim在评论中提到的,如果您想在活动停止运行时停止代码,则可以在onResume中注册接收器,并在onPause中取消注册。
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
@Overrride
public void onResume(){
super.onResume();
registerReceiver(receiver, filter);
}
类似于这样:
private class myThread extends Thread{
private boolean run = true;
public void run(){
while(run){
do code
Thread.sleep(1000l * 60) // one minute
}
}
}
TIME_TICK
广播事件在时间更改时触发(每分钟一次),我会编辑答案并添加参考。 - Farnabaz