Java 每次使用android时,通过Intent创建新的活动实例?

Java 每次使用android时,通过Intent创建新的活动实例?,java,android,android-activity,Java,Android,Android Activity,如何防止每次创建门店活动实例 当我调用startActivity(newintent(this,StoreActivity.class))时,它将在StoreActivity中创建新实例并调用OnCreate方法。我想在创建时调用一次Oncreate 这可能吗?这样做 startActivity(new Intent( this,StoreActivity.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)); 从 如果已设置,则如果

如何防止每次创建门店活动实例

当我调用
startActivity(newintent(this,StoreActivity.class))
时,它将在
StoreActivity
中创建新实例并调用
OnCreate
方法。我想在创建时调用一次
Oncreate

这可能吗?

这样做

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

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


常量值:536870912(0x20000000)

这是不可能的,因为每次按下后退按钮时,都会调用onBackPressed()方法,该方法实际上会破坏您的存储活动

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


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

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

完成()

就像这样:

startActivity(new Intent(this, newActivity.class));
finish();
检查此链接
像这样开始你的活动:

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);

在第一次启动activity时,它将只调用onCreate(),如果activity已经在运行,它将只调用onNewIntent(),而不是创建activity的新实例或调用onCreate

你说它不工作是什么意思?即使“活动”已打开,它是否仍在启动新实例?当我从MainActivity调用storeActivity时,在创建storeActivity实例期间调用OnCreate方法时,现在我按back,onBackpressMethod调用from storeActivity。。。我又回到了主要活动中。。现在,当我从主活动重定向到存储活动时,它不应该是StoreActivity的callonCreate方法。。因为我已经创建了StoreActivity的实例。它不是这样工作的。这与Android框架流程背道而驰。你应该重新思考你想要达到的目标,这是不可能的。您应该查看此文档,并使用类似的概念保存活动状态(当您的活动被销毁时),然后在根据意图重新创建活动时重用这些保存的状态。
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);