aam*_*iri 3 android extras android-intent android-activity
我有一个应用程序介于许多不同的活动之间.一项活动,我的主要活动,其行为取决于应用程序中的哪个活动启动了主要活动.我想我可以通过让其他所有活动将一个名为"launcehdFrom"的额外活动放入intent中来记录这一点,其中包含一个名为hte activity的字符串,该字符串称为主要活动.我遇到的问题是,一旦设置了该值,它就不能被另一个活动覆盖.我没有找到一个很好的直接方法来做到这一点.任何建议?
从我的主要活动中的onResume()调用以下代码:
private void processIntentRequest(){
Intent intent = getIntent();
ProcessIntentRequestType caller = (ProcessIntentRequestType)intent.getSerializableExtra("launchedFrom");
switch(caller){
case startUpActivity:
load(this.myObj);
break;
case otherActivity:
int uri = integer.parseInt(this.getIntent().getExtras().getString("uri"));
load(this.myObj, uri);
break;
default:
load(this.myObj, 1);
}
Run Code Online (Sandbox Code Playgroud)
这是第一次启动主要活动的代码:
public void launchMainActivity(Obj myObj){
Intent launchMain = new Intent(this, mainActivity.class);
login.putExtra("launchedFrom", ProcessIntentRequestType.startupActivity);
startActivity(launchMain);
}
Run Code Online (Sandbox Code Playgroud)
这是在启动活动至少加载一次后从其他一些活动启动主活动的代码:
protected void launchMainActivity(Obj myObj, HelperObj helper) {
String uri = helper.uri;
Intent mainActivity = new Intent(this, MainActivity.class);
mainActivity.putExtra("uri", uri);
mainActivityputExtra("launchedFrom", ProcessIntentRequestType.otherActivity);
startActivity(mainActivity.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
finish();
}
Run Code Online (Sandbox Code Playgroud)
在调用具有一些值得注意的行为的startActivity时,您正在使用FLAG_ACTIVITY_SINGLE_TOP.在这种情况下,从那里覆盖onNewIntent
和调用setIntent
.之后,平台将呼叫onResume
并且您的呼叫getIntent
将返回新意图.