【问题标题】:Broadcast receiver reaches to main activity although main activity is killed尽管主要活动被杀死,广播接收器仍到达主要活动
【发布时间】:2015-08-06 01:43:06
【问题描述】:

我的情况有点不同。我正在为我的应用程序开发一个 API,以便第三方开发人员可以使用我的应用程序。这就是为什么我的 API 代码不过是 Facebook SDK 之类的库(导入并使用它。) 在这个 API 中,我使用了 alarmManager 和 BroadCastReceivers,我需要第三方开发人员的 Main Activity 的上下文来使 API 工作。 这就是为什么我编写了一个示例应用程序来完成它,并将活动和上下文作为我的 API 的静态变量发送到我的 API。
当我启动示例应用程序时,它运行良好,尽管它进入了 onDestroy 状态。

但是,当我从内存(从应用程序托盘)中清除我的应用程序后,由于后台接收器接收到某些内容时一些 null 静态变量,它会爆炸。

是的,我可以将 sharedPreferences 用于定义为布尔值、字符串等的静态变量。 定义为静态的主要活动的活动和上下文呢? 如何初始化它们?

或者当后台接收器接收到某些东西时,它会自动创建一个主要活动的实例?

【问题讨论】:

    标签: android static alarmmanager broadcast


    【解决方案1】:

    您必须在 onPause() 而不是 onDestroy() 这样的活动方法中取消注册您的接收器,

     @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(receiver);
    }
    

    【讨论】:

    • 但我希望接收器在后台工作,不想停止它。如果它收到一些东西,它会尝试访问 app 中的一些变量。但是应用程序已经被杀死了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多