如何在android活动中每分钟运行一次代码?

ome*_*ega 2 java android timer

在我的android项目中,我有一个需要每分钟运行一次代码的活动.我怎样才能做到这一点?代码需要在活动运行时每分钟运行而不是暂停(即用户看到它而不是其他活动).此外,它应该在应用程序最小化时运行.

当活动结束时,代码应该停止运行.

有谁知道这个代码?

谢谢

Far*_*baz 6

您可以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);
}
Run Code Online (Sandbox Code Playgroud)

广播行动:当前时间已经改变.每分钟发送一次.您不能通过在清单中声明的​​组件来接收它,只能通过使用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);
}
Run Code Online (Sandbox Code Playgroud)

  • 即使应用程序最小化,代码也会运行.您可以在onResume中注册接收器并在onPause中注销它以获得帖子中声明的效果. (2认同)