1.⾸先我们的⽬的是长期监听时间变化,其实应⽤程序退出。
通过了解我们知道注册ACTION_TIME_TICK⼴播接收器可以监听系统事件改变,但是 查看SDK发现ACTION_TIME_TICK⼴播事件只能动态注册:
电子管功放电路Broadcast Action: The current time has changed. Sent every minute. You can not receive this through components declared in manifests, only by exlicitly registering for it isterReceiver().
散堆填料所以要想实现长期监听时间变化,就需要借助后台服务的帮助了 2.解决⽅法(3步骤):
(1)在某个时间启动后台服务
ample.broadcastreceiverofdatachange;
import android.os.Bundle;
推进式搅拌桨import android.app.Activity;
t.Intent;
山体滑坡监测public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
羊毛鞋垫setContentView(R.layout.activity_main);
//启动后台服务
Intent service=new Intent(this, TimeService.class);
startService(service);
}
}
(2)在服务组件中动态注册⼴播事件
ample.broadcastreceiverofdatachange;
import android.app.Service;
t.Intent;
t.IntentFilter;
import android.os.IBinder;
import android.util.Log;
public class TimeService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Log.i("liujun", "后台进程被创建。。。");
//服务启动⼴播接收器,使得⼴播接收器可以在程序退出后在后天继续执⾏,接收系统时间变更⼴播事件DataChangeReceiver receiver=new DataChangeReceiver();
registerReceiver(receiver,new IntentFilter(Intent.ACTION_TIME_TICK));
}混合辅助肢体
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("liujun", "后台进程。。。");
StartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Log.i("liujun", "后台进程被销毁了。。。");
}
}
(3)在⼴播接收器组件中操作
ample.broadcastreceiverofdatachange; t.BroadcastReceiver;
t.Context;
t.Intent;
import android.util.Log;
public class DataChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("liujun", "时间发⽣变化。。。");
}
}
//⾄此长期实现后台监听时间变化Demo就完成了。。。