Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓-一款更好的网站启动器原生应用_Android_Launcher - Fatal编程技术网

Android 安卓-一款更好的网站启动器原生应用

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 {

我开发了一个非常简单的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 {
    /** 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图标时,仍将创建一个新的浏览器窗口

我希望我在描述我的问题和我想到的解决方案时足够清楚——哪一个是理想的

拜托,我想知道你会建议如何解决我的问题

谢谢,
Dan

onResume()方法总是在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);