android - 显示 Activity 后执行 AsyncTask

标签 android asynchronous

我正在开发 Android 3.1 应用程序。

我想在显示 Activity 后执行 AsyncTask。我想在执行 AsyncTask 之前向用户显示一些内容。

我读到不建议在 onCreate() 上执行 AsyncTask

onStart()onResume() 上我必须在哪里执行 AsyncTask

我想在执行之前留出足够的时间来显示 Activity 。

最佳答案

onCreate()onStart()onResume() 是操作系统调用的生命周期方法,不应直接调用.但是,您可以覆盖它们,让您的代码在 Activity 生命周期的这些阶段执行:

enter image description here

但是,如果您希望 AsyncTask 在所有 View 被膨胀并绘制到屏幕后启动,那么您需要将代码放在此处:

    toReturn.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        public void onGlobalLayout() {
            toReturn.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            // asyncTask.execute();
        }
    });

在上面的示例中,toReturn 是 onCreate() 方法中的一个 View 。它可以是您喜欢的任何 View 。

这从 View 中拉取一个 ViewTreeObserver 并向其添加一个监听器,当 View 完成绘制到屏幕时将调用该监听器。请务必保留“removeGlobalOnLayoutListener()` 行,因为这将停止每次绘制 View 时触发代码。

关于android - 显示 Activity 后执行 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10205855/

相关文章:

android - 如何在 Android 项目中使用 libffmpeg.so?

Android DAWG实现

android - 窗口标题文字大小

javascript - Node.js 异步并行不工作应该如何?

JavaScript(node.js) - 异步等待不起作用

javascript - 我怎样才能让 redux 派发一个 Action 并返回一个 promise ?

c# - 异步数据读取器和执行顺序

android - 为 EditText(Android) 显示英文键盘

android - picasso 什么时候刷新图像缓存

javascript - 使 FB.api() 调用同步