我在将我的接收器从另一个活动中注销时遇到了麻烦。这里是:
在我的启动活动 A 中启动/注册广播接收器。
活动一:
public class ActivityA extends Activity {
private PowerButtonReceiver mPowerButtonReceiver = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (getPowerButtonReceiver() == null)
{
mPowerButtonReceiver(new PowerButtonReceiver());
registerReceiver(mPowerButtonReceiver, new IntentFilter("android.intent.action.SCREEN_ON"));
}
}
public void unregister() {
try {
unregisterReceiver(mPowerButtonReceiver);
} catch (NullPointerException e) {
e.printStackTrace();
}
if (mPowerButtonReceiver == null) {
Log.i(TAG,"unregistered PowerButtonReceiver!");
}
}
然后我在接收器的 onReceive() 方法中启动 Activity B。在此之后,我进入 Activity B 的 onCreate() 方法,做我的事情,在 onCreate() 结束时,我想注销 BroadcastReceiver:
活动 B: (--> android:launchMode="singleTop")
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
[...do my stuff...]
//un-register PowerButtonReceiver --> call in Activity A
MainActivity m = new MainActivity();
m.getParent();
m.unregister();
}
我的最后一行开始调用 unregister(),但那里的 Receiver 为空,看起来它没有得到它的引用。此外,Receiver 不会取消注册,并且仍在收听。我很确定我的错误在于引用/调用;但我不知道如何正确地做:/
我在这里想念什么?有人能帮我吗?