【问题标题】:clarifications about activities states关于活动状态的说明
【发布时间】:2013-10-24 08:55:06
【问题描述】:

在我的应用中,有几种情况我应该知道哪些活动对用户可见。

  • 是否有让用户可以看到当前活动的功能?

现在我正在做的是创建一个带有静态变量的类,例如

布尔静态 mainActivityIsVisible = false;

在 onResume() 和 onPause() 的真/假之间切换; 因此,其他活动可以检查此变量以找出答案。

Does the same apply to check if an activity is stopped or destroyed ? Or is there a way to check the activities from the stack of the app ?

终于

How can I find that the last activity's onDestroy() was called. My objective from this is to find out if the app has totally exited and does not have any activities running, nor is minimized. 

问题可以改写为

How can I know my activity is not running."

How can I know my activity is running but not visible to the user ?

【问题讨论】:

    标签: android android-activity user-experience


    【解决方案1】:

    你可以用这个:

    1) 我如何知道活动是否正在运行?

    class MyActivity extends Activity {
         static boolean active = false;
    
          @Override
          public void onStart() {
             super.onStart();
             active = true;
          } 
    
          @Override
          public void onStop() {
             super.onStop();
             active = false;
          }
    }
    

    2) 如何检查activity是在前台还是在可见背景中?

    public class MyApplication extends Application {
    
      public static boolean isActivityVisible() {
        return activityVisible;
      }  
    
      public static void activityResumed() {
        activityVisible = true;
      }
    
      public static void activityPaused() {
        activityVisible = false;
      }
    
      private static boolean activityVisible;
    }
    

    在 AndroidManifest.xml 中注册您的应用程序类:

    <application
        android:name="your.app.package.MyApplication"
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
    

    将 onPause 和 onResume 添加到项目中的每个 Activity(如果您愿意,您可以为您的 Activity 创建一个共同的祖先,但如果您的 Activity 已经从 MapActivity/ListActivity 等扩展,您仍然需要编写以下内容手工):

    @Override
    protected void onResume() {
      super.onResume();
      MyApplication.activityResumed();
    }
    
    @Override
    protected void onPause() {
      super.onPause();
      MyApplication.activityPaused();
    }
    

    在您的 finish() 方法中,您想使用 isActivityVisible() 来检查活动是否可见。在那里,您还可以检查用户是否选择了一个选项。满足两个条件时继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      相关资源
      最近更新 更多