我的Android应用包含多次启动以在树状结构中移动的活动。要关闭此结构的所有活动,我已声明广播接收器等待意图并在需要时完成活动。此活动的每个实例都使用相同的操作名称启动自己的接收器。
此应用程序的所有方面都在使用4.1.2版本的模拟器API20和Sony Xperia S. 在Manta MID709平板电脑(与xperia相同的Android版本)上,接收器仅在特定活动位于顶部(运行且可见)时才起作用。因此,如果我发布新内容,它会关闭此活动的一个实例,或者无关闭。
声明广播接收器的代码(在onCreate之外,但在Activity内部):
public BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.application.STOP")) {
unregisterReceiver(broadcastReceiver);
Toast.makeText(getApplicationContext(), "Intent Received", Toast.LENGTH_LONG).show();
finish();
}
}
};
激活关闭的代码:
Intent intent2 = new Intent();
intent2.setAction("com.application.STOP");
sendBroadcast(intent2);
在模拟器和xperia上我以三个(三个实例正在运行)“Intent Received”toast和app关闭结束。在平板电脑上,有时会有一个“意图收到”吐司或没有。
答案 0 :(得分:0)
答案很简单,代码100%好。我在开发人员选项中检查了我的平板电脑,但没有保留活动。换句话说,中止每个不存在的活动。它正在杀死我的广播接收器。希望这个答案能帮到某人:)