【问题标题】:start android activity after loading all the content加载所有内容后启动android活动
【发布时间】:2014-09-22 21:56:10
【问题描述】:

我在 onCreate (MainActivity) 中有一个初始屏幕图像。

我希望图像一直保留到第二个活动(URL 浏览器)完成加载。

有没有办法预先执行它并在几秒钟后加载。

我看到的所有示例都有一个启动屏幕运行几秒钟,然后启动第二个活动但不预执行。

我该怎么做?

【问题讨论】:

  • 什么是 URL 浏览器?我曾经在我的活动上放置一个布局,带有启动画面,当活动完成加载时,我在回调函数中删除了带有setVisibility(View.GONE);的上部布局。
  • URL 是我想使用 webview 加载的网站链接。是否可以以编程方式更改布局,在第一个布局中具有图像,在第二个布局中具有 webview。

标签: android android-activity splash-screen oncreate


【解决方案1】:

您应该开始实际的活动并显示您在初始屏幕中使用的图像,而不是只有一个图像(可能是您当前的初始屏幕)的初始屏幕。加载该活动所需的所有内容后,您可以从主活动中删除图像。

【讨论】:

  • 我尝试在 asyctask 中将图像设置为预执行并使其稍后不可见,但图像与其他元素重叠,我可以看到它是透明的。因此,我创建了 2 个具有 2 种不同布局的活动。第一个布局有 imageView,第二个布局有要加载的主要内容。
【解决方案2】:

或者,在您的活动中加载一个显示初始屏幕的片段。使用异步任务让片段加载您需要加载的任何内容。在异步任务的回调中,卸载初始屏幕片段并加载一个新片段,其中包含您需要显示的任何内容。

【讨论】:

    【解决方案3】:

    您可以使用异步任务; 这是一个例子;

    private AsyncTask<String, Integer, String> xTask = new AsyncTask<String, Integer, String>() {
        @Override
        protected String doInBackground(String... strings) {
            //you can just sleep a while to show your splash
            return null;
        }
    
        @Override
        protected void onPostExecute(String s) {
            //do something as the execution completed, you can launch your real activity.
        }
    };
    

    关于你的活动 onResume

    @Override
    public void onResume() {
        if(xask.getStatus().equals(AsyncTask.Status.PENDING)) xTask.execute();
        super.onResume();
    }
    

    【讨论】:

    • 我认为这是您正在寻找的答案,但就像附加信息一样:cyrilmottier.com/2012/05/03/… 让用户盯着您的徽标并想知道需要多长时间对用户友好度太差,我几乎无法理解为什么开发人员仍然使用这些。
    • 这里我主要是想在后台启动活动,并在稍有延迟后将其带到 UI。例如,一个 URL 被打开,但几秒钟后被带到了前端 UI。我尝试使用 asynctask,但并没有真正的帮助。
    • 你能在 asynctask 上分享你的试用版吗
    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多