我开发了一个非常简单的Android原生应用来启动我的HTML5 webapp。 这是主要的课程:
package com.plancake.android.app;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
public class PlancakeActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse("https://www.mywebsite.com"));
startActivity(viewIntent);
}
}
当我从主屏幕点击其图标时,第一次一切正常:Android打开浏览器并加载我的webapp。可爱!
当我离开网页浏览器并且再次点击主屏幕或任务管理器上的启动器图标时出现问题。在那种情况下,我只是一个黑屏。
我认为问题在于Android会调用onResume方法(或其他方法),无论如何不会在后一种情况下调用onCreate。
我可以看到两种解决方案:
1)我在所有其他方法中复制startActivity调用,例如onStart,onRestore - 但在这种情况下,我担心我的应用程序每次都会创建一个新的浏览器窗口,因此不必要地消耗大量内存。
2)或者在每次点击之后,强制我的启动器应用程序离开内存,以便每次点击时调用onCreate方法 - 但在这种情况下,即使我“杀死”我的应用程序,浏览器仍然会打开,所以下次我点击我的启动器图标,无论如何都会创建一个新的浏览器窗口
我希望我能够清楚地描述我的问题和我想到的解决方案 - 其中任何一个都是理想的。
拜托,我想知道你会如何建议解决我的问题。
谢谢,
丹
答案 0 :(得分:1)
onResume()方法总是在onCreate()之后调用。
如果你离开你的活动并且它没有被系统杀死,那么它可能不会再被“创建”。它处于暂停状态。
您应该做的是将代码移至onResume(),以确保每次进入应用程序时都会调用创建webview的意图