有没有更好的方法来完成另一个活动的活动?

Pal*_*avi 5 android android-intent android-activity

我有 3 个活动 FirstActivity、SecondActivity 和 ThirdActivity。FirstActivity 导致 SecondActivity 导致 ThirdActivity。我希望能够在 FirstActivity 和 SecondActivity 、 FirstActivity 和 ThirdActivity 之间来回移动。

这是我实施的:

第一活动:

在 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);
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

第二个活动:

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

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

在此处输入图片说明

第三个活动:

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

在此处输入图片说明

在 ThirdActivity 上,当我单击“返回第一个活动”按钮时,我想返回到 FirstActivity。

我做了什么 :

第二个活动:

我已经声明了静态变量

static SecondActivity secondActivityMain;
Run Code Online (Sandbox Code Playgroud)

并在 onCreate 方法中分配它:

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

}
Run Code Online (Sandbox Code Playgroud)

第三个活动:

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

 public void backToFirstActivity(View view) {
        Toast.makeText(getApplicationContext(), "Third: finished second activity ",
                Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                SecondActivity.secondActivityMain.finish();
                ThirdActivity.this.finish();
            }
        }, 2000);

    }
Run Code Online (Sandbox Code Playgroud)

我的问题是:

1. 有没有更好的方法来完成另一个活动的活动?

2. 这种方式是否正确?

And*_*123 2

  1. 有没有更好的方法从另一个活动中完成该活动?

是的,您所做的操作是使用static实例Activity,很容易导致内存泄漏问题。仅在必要时并且非常小心地使用关键字始终是一个好习惯 。static

更好的方法会使用BroadCastreceiver

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

你需要搜索它Broadcastreceiver在 android 中的工作原理。

  1. 这种方式正确吗?

,你的做法不正确。