我如何知道应用程序是在android上打开的,在活动之间使用意图会产生冲突

我如何知道应用程序是在android上打开的,在活动之间使用意图会产生冲突,android,android-intent,android-activity,Android,Android Intent,Android Activity,我正在开发一个包含三个活动的应用程序,分别称为活动Ex1、Ex2和Ex3。Ex2和Ex3活动具有No History=true标志清单文件 Ex1是主要的活动 我的应用程序流是Ex1Ex2-->Ex3 加载应用程序时,我将在Ex1活动中设置一些值,例如计数数和一些布尔值的设置值 在第一次发射中,它工作正常。之后,我转到Ex1到Ex2,并使用intent返回Ex1(因为我必须将值从Ex2传递到Ex1),以便再次重置活动Ex1值,这会导致我的应用程序中的计算错误 我的要求是,每当我在这段时间内打开应

我正在开发一个包含三个活动的应用程序,分别称为活动Ex1、Ex2和Ex3。Ex2和Ex3活动具有
No History=true
标志清单文件

Ex1是主要的活动

我的应用程序流是
Ex1Ex2-->Ex3

加载应用程序时,我将在Ex1活动中设置一些值,例如计数数和一些布尔值的设置值

在第一次发射中,它工作正常。之后,我转到Ex1到Ex2,并使用intent返回Ex1(因为我必须将值从Ex2传递到Ex1),以便再次重置活动Ex1值,这会导致我的应用程序中的计算错误


我的要求是,每当我在这段时间内打开应用程序时,只需增加不计数和其他设置值。每当我在Ex1到Ex2、Ex2到Ex1之间移动时,不应更改/修改计数变量和设置变量。这些应该只有在我打开应用程序时才会生效。如何做到这一点?

以下是不使用共享首选项的方法。我还没有测试过这个,但它应该可以工作

如果我理解正确,您可以在活动
Ex1
Ex2
之间切换,如下所示:

Intent intent = new Intent(getBaseContext(), Ex1.class);
//you are probably putting some data in your intent like this:
intent.putExtra("myData", myData);
startActivity(intent);
因此,当切换到另一个活动时,您可以放置额外的布尔标志,表示您的活动已从另一个活动切换。因此,当切换到
Ex1
时,将其放入您的
Ex2
(以及可能切换到
Ex1
的所有其他活动)

然后,只需将以下条件放在设置数据的
Ex1
活动中(通常是
onCreate
方法)


完成初始计数/计算后,将这些值保存为共享首选项。仅当这些值当前不存在时才重新计算。谢谢,我从您的回答中得到了想法,并对延迟表示抱歉
Intent intent = new Intent(getBaseContext(), Ex1.class);
intent.putExtra("switched", true);
startActivity(intent);
//was activity switched to, or did application just start?
//if "switched" key isnt set in your intent, this just returns false
boolean wasActivitySwitchedTo = getIntent().getExtras().getBoolean("switched");
if(!wasActivitySwitchedTo) {
//application started - **do your value setting here**
...
} else {
//activity was switched to from another activity - **dont do your setting**
...
}