3

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

我读了这篇文章:

getApplication() 与 getApplicationContext()

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

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

这是一个例子:

广播接收器:

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

活动:

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

在我的活动中,日志始终显示“Num PA:0”。

4

1 回答 1

4

您肯定应该使用一些持久性存储,例如SharedPreferences.

这背后的一个原因 - 您的应用程序实例几乎可以在任何时候被 Android 操作系统杀死(当您的应用程序在后台时)。所以,你不能依赖你的变量,甚至static. 您应该将状态保存在持久存储中。

于 2012-10-01T13:50:31.880 回答