Java 返回上一页时,使用Intent()而不是finish()有什么好处?

Java 返回上一页时,使用Intent()而不是finish()有什么好处?,java,android,Java,Android,我的教授告诉我们,回到以前的活动的方法是创建一个新的活动。但我注意到,这会将一个新活动添加到堆栈中,从而创建活动的倍数。当我问他这个问题时,他没有给出一个明确的答案,我想知道创建一个新的活动并增加应用程序堆栈的大小而不是使用finish()返回主活动的主要优势是什么 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState)

我的教授告诉我们,回到以前的活动的方法是创建一个新的活动。但我注意到,这会将一个新活动添加到堆栈中,从而创建活动的倍数。当我问他这个问题时,他没有给出一个明确的答案,我想知道创建一个新的活动并增加应用程序堆栈的大小而不是使用finish()返回主活动的主要优势是什么

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
//more code
 }
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_products) {
        Intent in = new Intent(this, ProductsActivity.class);
        startActivity(in);
    }
}//this is how we move from main activity to the products activity
ProductsActivityCode:

public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_home) {
        Intent in = new Intent(this, MainActivity.class);
        startActivity(in);
    }

    return super.onOptionsItemSelected(item);
}
正如您所看到的,在转到产品活动和返回MainActivity()时,我们在两个方向上创建了一个新活动

我的教授告诉我们,回到以前的活动的方法是创建一个新的活动

这是错误的,因为“返回到上一个活动的方法”是在代码中什么都不做,然后按后退按钮,因为这是默认的Android行为

但我注意到,这会将一个新活动添加到堆栈中,从而创建活动的倍数

这是基于您发布的代码的预期行为,是的

当我问他这件事时,他无法给出明确的答案

显然,我们没有完整的上下文,只有你的评论,但是如果你教授Android开发的教授不能解释在Android中如何在活动之间导航,你可能会想找一位新教授


我想知道创建一个新活动并增加应用程序堆栈的大小而不是使用finish()返回主活动的主要优势是什么

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
//more code
 }
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_products) {
        Intent in = new Intent(this, ProductsActivity.class);
        startActivity(in);
    }
}//this is how we move from main activity to the products activity

正如你所指出的,这没有好处,事实上也有一些缺点。这不是Android中的“返回”方式。

答案取决于您实际开始活动的目的标志。您只能强制堆栈中的一个活动,或者您可以启动一个全新的具有新状态的活动,并希望旧活动被正确销毁,但如果没有,则应该有方法防止用户返回到错误的活动状态旧活动永远不会被销毁,当使用手机上的“后退”按钮时,它会开始执行创建的所有活动。举个例子,如果我有一个MainActivity()并移动到另一个名为AboutUsActivity()的活动,然后多次返回,当我使用后退按钮时,我浏览所有活动的次数与我浏览页面的次数相同。我不能代表教授的答案,但这里描述了维护后堆栈“我想知道创建一个新活动并增加应用程序堆栈的大小而不是使用finish()返回主活动的主要优势是什么?“--总的来说,你的直觉似乎是正确的,不清楚你的导师为什么这样教你。阅读外部状态不是我所指的。我说的是更多的细节——你已经将活动向下滚动了一半,复选框仍然被单击,等等。但是,是的,就像我说的,答案取决于你想要的状态,但是他在回答中仍然是错误的,因为无论是否有新的意图,你都可以使用活动生命周期方法来保存、清理和恢复状态