【问题标题】:Android using static boolean as flag to determine if activity is visibleAndroid 使用静态布尔值作为标志来确定活动是否可见
【发布时间】:2013-08-15 18:03:39
【问题描述】:

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

【问题讨论】:

    标签: android android-activity lifecycle static-members


    【解决方案1】:

    当然,您可以使用静态布尔标志。但是,如果您有更多选项然后是真/假,我建议改用enum

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

    因此,对于清晰的代码,请使用以下枚举标志:

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

    之后就可以使用了:

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

    【讨论】:

      【解决方案2】:

      你说的是对的:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-01-06
        • 1970-01-01
        • 2018-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-01
        相关资源
        最近更新 更多