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

Posted

技术标签:

【中文标题】广播接收器正在模拟器和手机上工作,但不是平板电脑【英文标题】:Broadcast receiver is working on emulator and phone, but not tablet 【发布时间】:2014-12-16 20:38:52 【问题描述】:

我的 android 应用程序包含多次启动以在树状结构中移动的活动。为了关闭这个结构的所有活动,我声明了一个广播接收器来等待意图并在需要时完成活动。此活动的每个实例都使用相同的操作名称启动自己的接收器。

这个应用程序的所有方面都在模拟器 API20 和 4.1.2 版本的索尼 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”祝酒词结束,然后应用程序关闭。在平板电脑上,有时会有一个“Intent received” toast 或没有。

【问题讨论】:

【参考方案1】:

答案很简单,代码 100% 好。我已经在开发人员选项中签入了我的平板电脑以不保留活动。换句话说,中止所有不存在的活动。它正在杀死我的广播接收器。希望这个答案会对某人有所帮助:)

【讨论】:

以上是关于广播接收器正在模拟器和手机上工作,但不是平板电脑的主要内容,如果未能解决你的问题,请参考以下文章

android 一段时间后手机应用接收不到广播了

[android] 手机卫士黑名单功能(短信拦截)

如何验证手机是不是已对接?

当手机处于睡眠模式时,为什么用于来电的广播接收器在棒棒糖上不起作用

替换“vpn.connectivity”广播事件

Eclipse 中 Android 平板电脑模拟器上的“未选择目标”错误