1) 创建一个服务并在其中放入计时器代码
2) 在服务中,在您完成广播意图后
3) 在您的活动中编写一个广播接收器并在广播接收器中再次启用按钮。
关闭应用程序后运行服务查看:How to keep a service running in background even after user quits the app?
要从服务发送意图到活动,请查看:send intent from service to activity
一些测试代码
1)创建服务:
public class TimeService extends IntentService {
public TimeService() {
super("TimeService");
}
@Override
protected void onHandleIntent(Intent intent) {
//Your Time Code
//broadcast intent in your app
Intent RTReturn = new Intent(MainActivity.RECEIVE);
RTReturn.putExtra("state", "done");
LocalBroadcastManager.getInstance(this).sendBroadcast(RTReturn);
}
2)你的活动
-创建动作字符串
//Your activity will respond to this action String
public static final String RECEIVE = "TIMING";
-创建广播管理器
private LocalBroadcastManager bManager;
-创建一个广播接收器
private BroadcastReceiver bReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(RECEIVE)) {
String serviceString = intent.getStringExtra("state");
if(serviceString.equals("done"))
// enable your button
btnEnable();
}
}
};
-将意图过滤器放在onCreate()中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//make an intent filter
bManager = LocalBroadcastManager.getInstance(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(RECEIVE);
bManager.registerReceiver(bReceiver, intentFilter);
}
点击后将其添加到您的按钮中
//start time service
Intent intent = new Intent(this,TimeService.class);
startService(intent);
最后记住两件事:
首先 -> 将服务添加到您的清单
second -> 在 onDestroy() 中取消注册广播接收器