Android生命周期问题

问题描述:

我在我的应用程序中使用静态布尔值使SMS接收器处于活动状态。Android生命周期问题

public class SmsListener extends BroadcastReceiver { 

     public static boolean activated = false; 


     @Override 
     public void onReceive(Context context, Intent intent) 
      if (activated){ //do something 
       } 
     ... 
     } 
} 

我有一个小部件来激活或不是短信接收器(通过这个静态值)。一切运作良好,但我只注意到,如果手机内存变低,短信监听器失去其状态,应用程序无法按预期工作。 我想它与android生命周期有关。我没有后台服务,系统终止了这个过程。我应该避免使用这种方法吗?我应该总是开始一项服务,只为了避免android进程kill?

感谢

托比亚Loschiavo

我发现有全局唯一可靠的办法就是把他们的服务。 Android的方式是使用onSaveInstanceState,然后在所有可能或不可能用该状态调用的各种方法中恢复状态。即使这并不完全可靠,所以你也可以在onPause时将状态写入首选项,然后在onResume中读取它们。

还要注意,根据你的清单,任何事情都可能导致你的活动失败,比如打开键盘或旋转手机,而不仅仅是内存不足。

+0

我已经在首选项中存储激活...它似乎工作 – Matroska 2010-04-20 21:11:47

+0

我也设置了AlarmManager Alarm。如果应用程序遇害,闹钟是否能够存活?从文档看起来是的。 – Matroska 2010-04-21 08:17:21

+0

几乎所有的东西都会比较活跃。它们应该被设计成在不存在的情况下不断闪烁。 – drawnonward 2010-04-21 17:25:13