Android 是否有更好的方法从其他活动中完成活动?

Android 是否有更好的方法从其他活动中完成活动?,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有三个活动第一个活动,第二个活动和第三个活动。第一个活动导致第二个活动,第二个活动导致第三个活动。我希望能够在FirstActivity和SecondActivity、FirstActivity和ThirdActivity之间来回移动 以下是我实施的: FirstActivity: 在FirstActivity中,我有一个onClick方法“goToSecondActivity”,它启动SecondActivity public void goToSecondActivity(View vi

我有三个活动第一个活动,第二个活动和第三个活动。第一个活动导致第二个活动,第二个活动导致第三个活动。我希望能够在FirstActivity和SecondActivity、FirstActivity和ThirdActivity之间来回移动

以下是我实施的:

FirstActivity:

在FirstActivity中,我有一个onClick方法“goToSecondActivity”,它启动SecondActivity

 public void goToSecondActivity(View view){
        Intent i = new Intent(this, SecondActivity.class);
        final EditText firstText = (EditText) findViewById(R.id.firstText);
        String userMessage = firstText.getText().toString();
        if(!"".equals(userMessage))
        i.putExtra("firstMessage",userMessage);

        startActivity(i);
    }

第二个活动:

在SecondActivity中,我有一个onClick方法“goToThirdActivity”,它启动了ThirdActivity

public void goToThirdActivity(View view){
        Intent i = new Intent(this , ThirdActivity.class);
        startActivity(i);
    }

第三活动:

在ThirdActivity中,我在两个不同的按钮上有两个onClick方法“backToFirstActivity”和“backToPreviousActivity”

在第三十个活动中,当我单击“返回第一个活动”按钮时,我想返回第一个活动

我所做的:

第二个活动:

我已经声明了静态变量

static SecondActivity secondActivityMain;
并在onCreate方法中分配它:

protected void onCreate(Bundle savedInstanceState) {
       ---
       ---
        secondActivityMain = this;
       ---
       ---

}
第三活动:

使用静态变量完成SecondActivity“SecondActivity.secondActivityMain.finish();”

我的问题是:

1。是否有更好的方法从其他活动中完成活动?

2。这种方式正确吗?

  • 是否有更好的方法从其他活动中完成活动
  • ,您所做的是使用
    静态
    安装在
    活动
    上,这很容易导致内存泄漏问题只有在必要时才使用
    静态
    关键字始终是一种很好的做法,而且要非常小心。

    更好的方法是使用
    BroadCastreceiver

    所以,您需要做的是在第一个和第二个活动中创建广播接收器,以及何时完成这些活动。使用
    sendBroadCast(..)
    方法

    你需要搜索一下
    Broadcastreceiver
    在android中是如何工作的

  • 这条路对吗

  • ,您的做法是不正确的。

    如果您想从第三个活动转到第一个活动,请将此意图与标记“flag\u ACTIVITY\u CLEAR\u TOP”一起使用,它将清除第三个和第二个活动

      Intent intent = new Intent(ThirdActivity.this, MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
    
    对于Manifeat文件中的FirstActivity,如果指定了android:launchMode=“singleTop”,则当您从ThirdActivity到FirstActivity时,将不会调用OnCreate()方法
    如果您在Manifeat文件中未指定lanuhMode,则将再次调用OnCreate

    谢谢您的回答。我已经搜索了很多,以将我的示例转换为广播,但我不知道如何将我的第二个活动转换为接收广播。请建议请检查标志\活动\清除\顶部。
      Intent intent = new Intent(ThirdActivity.this, MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);