我正在开发 Android 3.1 应用程序。
我想在显示 Activity 后执行 AsyncTask
。我想在执行 AsyncTask
之前向用户显示一些内容。
我读到不建议在 onCreate()
上执行 AsyncTask
。
在 onStart()
或 onResume()
上我必须在哪里执行 AsyncTask
?
我想在执行之前留出足够的时间来显示 Activity 。
最佳答案
onCreate()
、onStart()
和 onResume()
是操作系统调用的生命周期方法,不应直接调用.但是,您可以覆盖它们,让您的代码在 Activity 生命周期的这些阶段执行:
但是,如果您希望 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/