我使用以下命令从名为MainActivity的Activity中调用名为Activity1的活动:
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
所以,当控件来到Activity1时。正常活动生命周期开始。即onCreate()被调用,依此类推。
当控件在Activity1中时单击后退按钮。调用finish方法,然后调用onDestroy(),现在控件返回MainActivity屏幕。
@Override
public void onBackPressed() {
Log.d(TAG, "onBackPressed()");
finish();
}
下次我打电话给Activity1。当我从上一次调用中调用onDestroy(当我按下后退按钮时)时,再次调用onCreate。
问题: 1.当按下后退按钮而不必调用“finish()”方法时,有没有办法将控制权传递回MainActivity? 2.调用完成的问题,每次我从MainActivity调用Activity1时,都会创建一个新的Activity1实例。生命周期再次从onCreate()开始。 我不希望这种情况发生,因为这已经成为一个主要的性能问题。
我正在寻找的主要观点是,当我第一次调用它时,我是否可以从恢复状态启动activity1而不是oncreate。
答案 0 :(得分:1)
我不相信你需要打电话给#34;完成()" onBackPressed上的方法。当你按下后退按钮时,Android会为你做这件事。 onBackPressed用于持续小步舞整理(将内容保存到共享偏好等)。
Android默认行为是在屏幕上放置新活动时调用onCreate。如果不发生这种情况,你就无法调用新的Intent。
我不确定为什么这对您来说是性能问题。你能详细了解一下activity1正在做什么吗?你在进行繁重的网络通信吗?您是否可以缓存商店结果?
答案 1 :(得分:0)
在Actitity1中,您将WebView定义为:
private static WebView webView = null;
在onCreate()
中,只有在它为空时才创建它:
if(webView == null){
//create webview and load from network
}
明智地使用这种方法,因为如果指向其他活动中的对象,或者可能保持活动的对象(可运行,消息等),它可能很容易导致内存泄漏。