Android 安卓-一款更好的网站启动器原生应用
我开发了一个非常简单的Android原生应用程序来启动我的HTML5网络应用程序。 以下是主要课程:Android 安卓-一款更好的网站启动器原生应用,android,launcher,Android,Launcher,我开发了一个非常简单的Android原生应用程序来启动我的HTML5网络应用程序。 以下是主要课程: 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 {
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打开浏览器,我的网络应用程序被加载。可爱
当我离开webbrowser并从主屏幕或任务管理器中再次点击启动器图标时,问题就出现了。在这种情况下,我得到的只是一个黑屏
我认为问题在于Android调用onResume方法(或其他方法),无论如何,在后一种情况下不是onCreate
我可以看到两种解决方案:1) 要么我在所有其他方法中复制startActivity调用,例如onStart、onRestore,但在这种情况下,我担心我的应用程序每次都会创建一个新的浏览器窗口,因此会不必要地消耗大量内存
2) 或者在每次点击后,强制我的launcher应用程序离开内存,以便每次点击时调用onCreate方法-但在这种情况下,即使我“杀死”我的应用程序,浏览器仍将打开,因此下次点击我的launcher图标时,仍将创建一个新的浏览器窗口 我希望我在描述我的问题和我想到的解决方案时足够清楚——哪一个是理想的 拜托,我想知道你会建议如何解决我的问题 谢谢,
DanonResume()方法总是在onCreate()之后调用 如果您离开了活动,并且它没有被系统终止,那么它可能不会被再次“创建”。它处于暂停状态 您应该做的是将代码移动到onResume(),以确保每次进入应用程序时都会调用创建webview的意图onResume()方法总是在onCreate()之后调用 如果您离开了活动,并且它没有被系统终止,那么它可能不会被再次“创建”。它处于暂停状态
您应该做的是将代码移动到onResume(),以确保每次进入应用程序时都会调用创建webview的意图在启动意图后是否尝试调用finish()?我会在onPause方法中调用finish(),但我不确定如何打开另一个窗口,我甚至不确定您是否可以从另一个应用程序关闭窗口,也许有一种方法可以检查窗口是否已经打开,或者在onPause方法中调用finish将停止黑屏,但我仍然不确定window@Espiandev还没有。但这就是我们要走的路吗?即使我杀死了我的应用程序,浏览器仍然会“活着”。因此,当我再次点击启动程序图标时,将创建一个新的浏览器窗口,尽管已经打开了同一个窗口,对吗?@SmartLemon-是的,这正是我所关心的-我不想让事情变得太复杂,因为它们要么很容易损坏,要么会产生副作用。请尝试调用finish()在你激发你的意图之后?我会在onPause方法中调用finish(),但我不确定你可以如何打开另一个窗口,我甚至不确定你是否可以从另一个应用程序关闭一个窗口,也许有一种方法可以检查窗口是否已经打开,或者在onPause方法中调用finish是否会停止黑屏,但是我仍然不能确定是否已经打开window@Espiandev还没有。但这就是我们要走的路吗?即使我杀死了我的应用程序,浏览器仍然会“活着”。因此,当我再次点击启动程序图标时,将创建一个新的浏览器窗口,尽管已经打开了同一个窗口,对吗?@SmartLemon-是的,这正是我所关心的-我不想让事情变得太复杂,因为它们要么容易损坏,要么有副作用这意味着每次我进入我的应用程序,一个新的浏览器窗口将被创建?我不认为。然而,出现的问题是,当您在浏览器上时,您必须处理触摸后退键时发生的情况。如果意图在onResume()方法中,则将创建它。为此,您应该调用startActivityForResult并重写我看到的ActivityResult方法。当我发射我的意图时,我能期待什么样的结果?结果是在发射活动中获得的。使用startActivityForResult(intent,requestCode)触发intent。浏览器完成后,将对启动活动调用onActivityResult(requestCode,…)方法。如果请求代码匹配,您可以做任何您想做的事情。您也可以尝试使用这个intent标志intent.addFlags(intent.flag\u ACTIVITY\u CLEAR\u WHEN\u TASK\u RESET);这是否意味着每次我进入我的应用程序时,都会创建一个新的浏览器窗口?我不这么认为。然而,出现的问题是,当您在浏览器上时,您必须处理触摸后退键时发生的情况。如果意图在onResume()方法中,则将创建它。为此,您应该调用startActivityForResult并重写我看到的ActivityResult方法。当我发射我的意图时,我能期待什么样的结果?结果是在发射活动中获得的。使用startActivityForResult(intent,requestCode)触发intent。浏览器完成后,将对启动活动调用onActivityResult(requestCode,…)方法。如果请求代码匹配,您可以做任何您想做的事情。您也可以尝试使用这个intent标志intent.addFlags(intent.flag\u ACTIVITY\u CLEAR\u WHEN\u TASK\u RESET);