【发布时间】:2016-04-29 05:48:43
【问题描述】:
我想知道onBackPressed()在Activity中的默认实现。 onBackPressed()的默认实现中的Activityrecover如何处理?
以下是我遇到的问题。我有一个测试Activity 这样的代码:
public class MainActivity extends Activity {
public static boolean test = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
Toast.makeText(this,"is "+test,Toast.LENGTH_LONG).show();
test = !test;
}
}
当我第一次进入应用程序时,我得到“是假的”。然后我单击返回按钮并进入主屏幕。之后,当我进入应用程序时,我得到了 Toast '是真的'。我认为onBackPressed() 在返回主屏幕时应该会杀死我的应用程序,但事实并非如此。这是我的问题。
如果我像这样覆盖onBackPressed()
@Override
public void onBackPressed() {
// super.onBackPressed();
finish();
try {
android.os.Process.killProcess(android.os.Process.myPid());
} catch (Exception e) {
e.printStackTrace();
}
}
进入应用后,我总是得到 Toast 'is false'。
谁能解释这个问题并告诉我onBackPressed() 的默认实现是什么?
想详细了解onBackPressed()的流程。看了onBackPressed()上的部分源码,但是看不懂。
提前致谢。
【问题讨论】:
-
似乎一切正常。你破坏了你的进程和
false字段“清除”。那么有什么问题呢? -
没有。我只是单击后按菜单按钮。返回主屏幕后,我再次进入此应用程序,但测试为真。这意味着,默认的 onBackPressed 并没有破坏我的进程。
-
默认
onBackPressed不会破坏您的进程。它会破坏您的activity和所有与活动相关的对象(片段、ui)。 -
@Foxinsocks 破坏我的活动而不回收 MainActivity.class ?
-
not recycle是什么意思?ClassLoader你的活动不会卸载class,如果你是这个意思。
标签: android android-activity android-lifecycle kill-process onbackpressed