我有一个 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”。