我的应用程序中有一个带有静态布尔值的SMS广播接收器,以使接收器处于活动状态。
public class SmsListener extends BroadcastReceiver {
public static boolean activated = false;
@Override
public void onReceive(Context context, Intent intent)
if (activated){ //do something
}
...
}
}
然后我有一个小部件来激活或不激活短信接收器(通过这个静态值)。一切运作良好,但我只是注意到,如果手机内存变低,短信听众就失去了状态,应用程序无法按预期工作。 我猜这与android生命周期有关。我在后台没有服务,系统终止了这个过程。我应该避免使用我的方法吗?我应该总是启动服务只是为了避免android进程杀死?
由于
Tobia Loschiavo
答案 0 :(得分:0)
我发现拥有全局变量的唯一可靠方法是将它们放入服务中。 Android方式是使用onSaveInstanceState,然后在使用该状态调用或不调用的所有各种方法中恢复状态。即使这样也不完全可靠,因此您也可以在onPause中将状态写入首选项,并在onResume中读取它们。
另请注意,根据您的清单,任何内容都可能会导致您的活动失败,例如打开键盘或旋转手机,而不仅仅是内存不足。