【问题标题】:Android: How to know when an activity finish?Android:如何知道活动何时结束?
【发布时间】:2015-03-14 01:12:21
【问题描述】:

我有一个main activity A -> call activity B -> call activity C -> call activity D

活动由startActivity(intent). 调用 Activity D 有一个“关闭”按钮。

点击Activity D上的“关闭”按钮时如何通知Activity A

感谢任何帮助。

【问题讨论】:

  • 为什么需要这样做?在您关闭 Activity D 时,它会简单地返回到 Activity C,而 Activity B 和 A 将以停止状态保留在后台堆栈中。在更糟糕的情况下,如果系统资源不足,活动 B 和/或 A 甚至可能已被系统销毁以释放内存。
  • -两种方法 1.) 让您拥有自己的侦听器 [自定义侦听器] 您可以通知您主要活动 2.) 使用 getter setter 方法并创建布尔对象您可以在主要活动中获取布尔值 -谢谢

标签: android android-activity activity-finish


【解决方案1】:

试试这个:

使用 SharedPreference 来存储 Activity D 中按钮的状态。

在 onResume() 下的活动 A 中,从 SharedPreference 中获取按钮的状态。

【讨论】:

    【解决方案2】:
       //* start the activity with enum defined int activity D to identify your activity
       startActivityForResult(intent, DActivity.D_REQUEST_CODE);
    
      //in your D activity define this
      private static final int D_REQUEST_CODE  = 1;
    
    
      //* when the button is clicked to close in your D activity, call this in the button event listner
      setResult(Activity.RESULT_OK, intent);
    
    
      //* implement this in your A activity
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) 
      {
        if(data==null)return;
        if (requestCode == DActivity.D_REQUEST_CODE) 
        {
          switch (resultCode) 
          {
            case Activity.RESULT_OK:
               //* do something
                break;
            default:
                break;
          }
        }
    

    【讨论】:

      【解决方案3】:
          findViewById(R.id.button_close).setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View view) {
                  startActivity(new Intent(this, Activity_A.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
              }
          });
      

      如果您希望在清除 Activity 堆栈的同时简单地显示 Activity A,这将起作用。如果您只想知道何时返回 Activity A,您可以按照上面的回答将状态保存在 SharedPrefs 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-15
        • 2016-04-17
        相关资源
        最近更新 更多