java - 如何让异步在后台运行线程?

标签 java android android-asynctask

我拉取了大约 1500 个数据图并将它们添加到 map View 的叠加层中。我想在我的程序的其余部分完成启动时在另一个线程中运行它。我希望进度微调器在加载数据绘图点时仅在 map 部分旋转。

我已经搜索并找到了我需要的东西,但我不确定如何实现它以及将它放在我的代码中的什么位置。

  1. 我会在参数中放什么
  2. 这是在另一个类中还是在我的主要 oncreate 方法中。
  3. 我什么时候调用这些方法?

    private class UpdateFeedTask extends AsyncTask<MyActivity, Void, Void> {
    
    private ProgressDialog mDialog;
    
    protected void onPreExecute() {
        Log.d(TAG, " pre execute async");
        mDialog = ProgressDialog.show(MyActivity.this,"Please wait...", "Retrieving data ...", true);
    
    }
    
    protected void onProgressUpdate(Void... progress) {
        Log.d(TAG, " progress async");     
    }
    
    @Override
    protected Void doInBackground(MyActivity... params) {
        // TODO Auto-generated method stub
        return null;
    }
    
    protected void onPostExecute(Void result) {
        Log.d(TAG, " post execute async");
        mDialog.dismiss();
    }
    }
    

最佳答案

从你的问题来看,我实际上不能百分百确定你目前对 AsyncTask 的理解,所以这可能是你已经知道的一些东西,但请耐心等待。

“这是在另一个任务中还是在我的 onCreate 方法中?”: AsyncTask 是一个类,您应该对其进行子类化以执行您需要的操作,它不是一段可以内联到您的 onCreate 中的代码。您可以在 onCreate 中创建一个匿名的 AsyncTask 类,但通常您希望它作为私有(private)内部类或完全属于自己的类。

至于何时调用方法;你不知道它们是生命周期事件。

onPreExecute() 在开始后台工作之前在 UI 线程上被调用,并且是执行修改组件以显示进度或弹出对话框等操作的地方。

doInBackground(Params...) 是在另一个线程的后台运行的主要方法,在这里做你的工作。 不要尝试在此处修改 UI

onPostExecute(Result) 是当您的任务完成并再次在 UI 线程上运行时。这是您应该处理 UI 更新的地方。

您只需调用 execute(Params..),它将启动 AsyncTask,将您作为参数放入的对象传递到 doInBackground(Params. ..) 任务的方法。因此,关于将什么作为参数放入的答案是您需要在 doInBackground(Params...) 中访问的任何内容。

这应该是满足您需求的一个不错的概述,但您真的应该查看 the docs .

关于java - 如何让异步在后台运行线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670833/

相关文章:

java - 如何将 JSONObject 转换为 gson.JsonObject?

android - 在单独的线程上运行一段代码

java - Java 的多维图形库

java - 如何在单例中通过字符串调用方法

代码中的 Android 显式 Intent

android - 应用程序升级时旧文件会怎样?

android - 测试 Android IAB - 订阅已取消但购买状态仍然有效

安卓 : Calling the methods on UI thread from AsyncTask doInBackground method

android - 我如何从异步任务返回结果

java - 从另一个 Java 程序运行 Hadoop 作业