Android使用静态布尔值作为标志来确定活动是否可见

时间:2013-08-15 18:03:39

标签: android android-activity lifecycle static-members

我想听听关于使用以下方法从其他活动或服务中确定活动是否可见的其他意见:该方法是关于使用静态boolean作为标志,这些值取决于活动生命周期。 我已经实现了这个解决方案,它似乎工作正常。但是我怀疑这是否是一个可靠的解决方案,因为根据我的理解,活动生命周期包含在该Activity类的实例中,但静态方法或字段适用于所有实例。对于活动,需要确定可见性状态,我使用了singleTask启动模式,因此不应该有多个实例。 考虑到这一点,假设静态布尔值100%代表我的活动的实际状态是否安全?

2 个答案:

答案 0 :(得分:1)

嗯,确定你可以使用静态布尔标志。但是,如果您有更多选项,然后是true / false,我建议改为使用enum

如果您的应用程序有超过2个活动,则使用布尔值只会导致难以维护。

因此,对于明确的代码,请使用枚举标志,如:

public enum EActivityState{
  UNKNOWN,
  VISIBLE,
  NOT_VISIBLE,
  LAUNCHED,
  // ....
}

您可以使用:

private EActivityState mActivityState = EActivityState.UNKNOWN;

....

if(EActivityState.LAUNCHED == mActivityState ){
  // do something
}

答案 1 :(得分:0)

你说的是对的:

  

静态方法或字段适用于所有实例

在此处查看活动生命周期:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

并确保正确设置您的旗帜,那么您的解决方案应该没问题。