在我的主要活动中,我创建了一个启动activityB的意图。一旦用户在activityB中完成了某些操作,我就会调用activityB.this.finish()
。问题是我看到在finish()
被调用之后,onDestroy()
- 可能还有其他活动关闭方法 - 正在我的activityA上被调用。
此外,当我单击ActivityB中的向上按钮时,它也会遇到与我在主活动中调用onDestroy()
相同的问题。
这对我来说没有任何声音,我在内存监视器上看到每次ActivityB调用finish()
时,它都会为我的应用分配另外10-20MB。我显然做错了什么;任何人都可以告诉我如何成功结束我已完成的活动,并返回上一个活动?感谢。
以下是我完成ActivityB的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
return true;
case R.id.action_create:
// do some work and then finish
CreateLocationActivity.this.finish();
}
然后我在这里登录以查看我的主要活动是否被破坏:
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("DESTROYED", "main activity has been obliterated har har!!");
// finish up activity:
SharedPreferences pref = getSharedPreference();
SharedPreferences.Editor editor = pref.edit();
editor.putString("something", "one");
editor.putString("something2", "two");
editor.putInt("number", 1);
editor.commit();
}
答案 0 :(得分:0)
我认为发生的事情几乎是正确的行为。摘自以下链接:http://developer.android.com/training/basics/activity-lifecycle/stopping.html
您的活动停止并重新启动有几个关键方案: •用户打开“最近的应用程序”窗口并从您的应用程序切换到另一个应用程序您的应用中当前位于前台的活动已停止。如果用户从主屏幕启动器图标或“最近的应用程序”窗口返回到您的应用程序,则活动将重新启动。 •用户在您的应用中执行启动新活动的操作。创建第二个活动时,将停止当前活动。如果用户然后按“返回”按钮,则重新启动第一个活动。 •用户在手机上使用应用程序时会接到电话。
我假设您正在使用startActivity将活动转移到B.有些帮助可以来自使用startActivityForResult。