如果您问我-我认为对于您的情况,最好的方法是创建自己的意图过滤器(正如您在问题中所建议的那样),因为如果您声明您的活动以接收内置广播的系统-它就有意义。那么使用这个内置广播有什么意义呢,如果你从系统的角度来看有点“违反他的合同”,并且在某些情况下想忽略它?
如果您仍然决定使用此内置过滤器,尽管我已经建议了,那么实现您想要的方法是:
不是在清单中注册您的接收器,而是在您的第一个启动活动的 onCreate() 方法中注册,并在 onDestroy() 中取消注册他。
这样,当您的所有活动都不是前台时,您的活动将不会被注册 - 从用户的角度来看,这接近于哪个应用程序关闭的状态。
如果您不确定它是如何完成的,那就是这样:
private BroadcastReceiver mMyCustomReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerReceiver(mMyCustomReceiver, IntentFilter.create(YOUR_FILTER_ACTION_COMMAND, YOUR_FILTER_DATA_TYPE));
}
@Override
protected void onDestroy() {
unregisterReceiver(mMyCustomReceiver);
super.onDestroy();
}