0

我的应用程序中有一个 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 进程被杀死?

谢谢

托比亚·洛斯基亚沃

4

1 回答 1

0

我发现拥有全局变量的唯一可靠方法是将它们放入服务中。Android 的方法是使用 onSaveInstanceState ,然后在可能会或可能不会以该状态调用的所有各种方法中恢复状态。即使这样也不完全可靠,因此您也可以在 onPause 时将状态写入首选项并在 onResume 中读取它们。

另请注意,根据您的清单,任何事情都可能会杀死您的活动,例如打开键盘或旋转手机,而不仅仅是内存不足。

于 2010-04-20T20:24:00.303 回答