广播接收器正在使用模拟器和手机,但不是平板电脑

时间:2014-10-21 14:57:03

标签: android broadcastreceiver multiple-instances

我的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关闭结束。在平板电脑上,有时会有一个“意图收到”吐司或没有。

1 个答案:

答案 0 :(得分:0)

答案很简单,代码100%好。我在开发人员选项中检查了我的平板电脑,但没有保留活动。换句话说,中止每个不存在的活动。它正在杀死我的广播接收器。希望这个答案能帮到某人:)