gpt4 book ai didi

android - 从 ReceiverRestrictedContext 获取应用程序,就好像使用了 getApplication(不是 getApplicationContext)

转载 作者:搜寻专家 更新时间:2023-11-01 08:08:00 24 4
gpt4 key购买 nike

我有一个 BroadcastReceiver,它必须从应用程序类中获取和修改一些数据。在某些 Activity 中也会检索和修改此数据。

我读了这篇文章:

getApplication() vs. getApplicationContext()

而且,正如它所说,getApplication 并不总是返回与 getApplicationContext 相同的对象。在我的例子中,如果我使用 getApplicationContext 在我的 BroadcastReceiver 中设置一个整数,然后我在我的 Activity 中检查它的值(使用 getApplication)它总是 0(默认值)。

我尝试在两个地方都使用 getApplicationContext,但返回的对象不一样。有什么方法可以在 BroadcastReceiver 中获取与我使用 getApplication 进入 Activity 时相同的对象吗?我应该改用 SharedPreferences 吗?

这是一个例子:

广播接收者:

MyApp app = (MyApp)context.getApplicationContext();
app.setNumPA(10);

Activity :

MyApp app = (MyApp) getApplication();
Log.d("MyActivity", "Num PA: "+app.getNumPA());

在我的 Activity 中,日志总是显示“Num PA: 0”。

最佳答案

您绝对应该使用一些持久性存储,例如 SharedPreferences

这背后的一个原因 - 您的应用程序实例几乎可以随时被 Android 操作系统终止(当您的应用程序处于后台时)。所以,你不能依赖你的变量,即使是static。您应该将状态保存在持久性存储中。

关于android - 从 ReceiverRestrictedContext 获取应用程序,就好像使用了 getApplication(不是 getApplicationContext),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com