每次安卓时都会通过Intent创建新的Instance Of活动?

时间:2016-02-26 12:00:42

标签: java android android-activity

如何防止每次创建Store实例活动?

当我致电startActivity(new Intent(this,StoreActivity.class))时,它会在OnCreate中创建新实例并调用StoreActivity方法。我想打电话一次Oncreate

这可能吗?

4 个答案:

答案 0 :(得分:1)

这样做

startActivity(new Intent(
       this,StoreActivity.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));

来自Android Documentation

public static final int FLAG_ACTIVITY_SINGLE_TOP

如果设置,如果活动已经在历史堆栈的顶部运行,则不会启动该活动。

常数值:536870912(0x20000000)

答案 1 :(得分:0)

这是不可能的,因为每次按下后退按钮时,都会调用 onBackPressed()方法,该方法会实际销毁 StoreActivity

如果您希望此方法不破坏您的活动,只需在此方法中删除或注释掉 super.onBackPressed()行。

在这种情况下,按下后退按钮时不会销毁您的活动,但是您必须使用任何其他逻辑将 MainActivity 置于堆栈顶部。

答案 2 :(得分:0)

尝试在开始新活动后完成第一个活动, 在Intent命令之后添加此代码。

结束();

像那样:

startActivity(new Intent(this, newActivity.class));
finish();

检查此链接 Finish an activity from another activity

答案 3 :(得分:0)

按此开始您的活动:

Intent storeIntent = new Intent(this, StoreActivity.class);
storeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(storeIntent);

首次启动活动时,它只会调用onCreate()一次,如果活动已经运行,则只调用onNewIntent()而不是创建新的活动实例或调用onCreate。