我正在使用短信听众,代码如下:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
EventEntry entry = ((MyApplication)context.getApplicationContext()).getCurrent();
System.out.println("Received message: " + smsMessage[0].getMessageBody() + " - SILENCE IS " + ((entry != null) ? "ON" : "OFF"));
}
}
以及对AndroidManifest的修改
<application
android:name="MyApplication" ...
在我的代码的另一部分(在AlarmManager的BroadcastReceiver中),我有
public void onReceive(Context context, Intent intent) {
((MyApplication).context.getApplicationContext()).setCurrent("TESTING");
}
但是,当我运行应用程序并发送示例文本时,我收到以下调试消息:
09-15 15:07:30.974: I/System.out(21625): DEBUG!!!!!! Setting current event to TESTING
09-15 15:07:54.399: I/System.out(21605): DEBUG!!!!!! Getting current event: null
为什么我的应用程序上下文不同步?
谢谢!
答案 0 :(得分:0)
我可以为您提供一个替代解决方案,您可以覆盖 MyApplication类中的onCreate()方法。
class MyApplication extends Application {
private static MyApplication singleTon;
public MyApplication getInstance(){
return singleTon;
}
@Override
public void onCreate() {
singleTon = this;
}
...... Here your remaining code....
}
现在您可以访问此类的实例,然后调用getApplicationContex();
(MyApplication.getInstance().getapplicationContext()).getCurrent();
希望它能对你有所帮助...... :)
答案 1 :(得分:0)
如果系统面临内存不足,您的应用程序可能随时被杀死。因此,静态变量或单例将重新初始化。也许这就是它为空的原因。
您应该使用SharedPreferences而不是将其存储在应用程序类
中