Android生命周期问题

时间:2010-04-20 20:15:37

标签: android service lifecycle

我的应用程序中有一个带有静态布尔值的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

1 个答案:

答案 0 :(得分:0)

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

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