Android 是否有更好的方法从其他活动中完成活动?
我有三个活动第一个活动,第二个活动和第三个活动。第一个活动导致第二个活动,第二个活动导致第三个活动。我希望能够在FirstActivity和SecondActivity、FirstActivity和ThirdActivity之间来回移动 以下是我实施的: FirstActivity: 在FirstActivity中,我有一个onClick方法“goToSecondActivity”,它启动SecondActivityAndroid 是否有更好的方法从其他活动中完成活动?,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有三个活动第一个活动,第二个活动和第三个活动。第一个活动导致第二个活动,第二个活动导致第三个活动。我希望能够在FirstActivity和SecondActivity、FirstActivity和ThirdActivity之间来回移动 以下是我实施的: FirstActivity: 在FirstActivity中,我有一个onClick方法“goToSecondActivity”,它启动SecondActivity public void goToSecondActivity(View vi
public void goToSecondActivity(View view){
Intent i = new Intent(this, SecondActivity.class);
final EditText firstText = (EditText) findViewById(R.id.firstText);
String userMessage = firstText.getText().toString();
if(!"".equals(userMessage))
i.putExtra("firstMessage",userMessage);
startActivity(i);
}
第二个活动:
在SecondActivity中,我有一个onClick方法“goToThirdActivity”,它启动了ThirdActivity
public void goToThirdActivity(View view){
Intent i = new Intent(this , ThirdActivity.class);
startActivity(i);
}
第三活动:
在ThirdActivity中,我在两个不同的按钮上有两个onClick方法“backToFirstActivity”和“backToPreviousActivity”
在第三十个活动中,当我单击“返回第一个活动”按钮时,我想返回第一个活动
我所做的:
第二个活动:
我已经声明了静态变量
static SecondActivity secondActivityMain;
并在onCreate方法中分配它:
protected void onCreate(Bundle savedInstanceState) {
---
---
secondActivityMain = this;
---
---
}
第三活动:
使用静态变量完成SecondActivity“SecondActivity.secondActivityMain.finish();”
我的问题是:
1。是否有更好的方法从其他活动中完成活动?
2。这种方式正确吗?
静态
安装在活动
上,这很容易导致内存泄漏问题只有在必要时才使用静态
关键字始终是一种很好的做法,而且要非常小心。
更好的方法是使用BroadCastreceiver
所以,您需要做的是在第一个和第二个活动中创建广播接收器,以及何时完成这些活动。使用sendBroadCast(..)
方法
你需要搜索一下Broadcastreceiver
在android中是如何工作的
否,您的做法是不正确的。如果您想从第三个活动转到第一个活动,请将此意图与标记“flag\u ACTIVITY\u CLEAR\u TOP”一起使用,它将清除第三个和第二个活动
Intent intent = new Intent(ThirdActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
对于Manifeat文件中的FirstActivity,如果指定了android:launchMode=“singleTop”,则当您从ThirdActivity到FirstActivity时,将不会调用OnCreate()方法
如果您在Manifeat文件中未指定lanuhMode,则将再次调用OnCreate谢谢您的回答。我已经搜索了很多,以将我的示例转换为广播,但我不知道如何将我的第二个活动转换为接收广播。请建议请检查标志\活动\清除\顶部。
Intent intent = new Intent(ThirdActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);