定制安卓系统功能时,常常需要在底层状态发生变化时把状态发给上层,比如有没有接入电源适配器、温度报警等等。这个时候增加一个系统广播是非常方便的方法之一。
可以写一个系统服务在Zygote中启动
在这个服务中与底层协议好,监听代表系统状态的prop变量或者别的方式去监听状态的改变
可以起一个线程:
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//监听并发送广播
}
},1000,1000);
发送系统广播:
private void sendStateBroadcast(String action_name, String extra_name, int extra_value) {
Intent intent = new Intent(action_name);
intent.putExtra(extra_name, extra_value);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
intent.addFlags(0x01000000 | 0x00400000);
this.sendBroadcast(intent);
}
制定协议时可以将一些客制化的系统广播全部统一在一个action里,用extra及其对应值来区分