android - 在线程内调用 AsyncTask

标签 android

我在 Android 应用程序中工作,我想从我的 UI 主线程调用 AsyncTask。为此,我想从一个线程调用我的 AsyncTask。

这是我从主 UI 线程调用的方法。这工作正常

  CommonAysnk   mobjCommonAysnk = new CommonAysnk(this, 1);
  mobjCommonAysnk.execute();

CommonAysnk 是我的 AsyncTask 类。我想将我的 Activity 和一个整数参数传递给 AsyncTask 构造函数。我如何从线程中调用它,如下所示。

 Thread t = new Thread() {
                public void run() {
                    try {                       
            CommonAysnk   mobjCommonAysnk = new CommonAysnk(this, 1);
            mobjCommonAysnk.execute();
                    } catch (Exception ex) {

                    }}};                            
            t.start();

当我尝试从线程调用它时,我无法正确传递 Activity 参数。

这是 CommonAysnk 类。请看一下

public class CommonAysnk extends AsyncTask<URL, Integer, String> {

    private Common mobjCommon = null;
    private Activity mobjActivity = null;
    private int mcallIntentcond = 0;
    private ProgressDialog mProcessDialog = null;

    public CommonAysnk(Activity activity, int condition) {
        mobjActivity = activity;
        mcallIntentcond = condition;

    }
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        mProcessDialog.dismiss();
    }
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mobjCommon = new Common();
        mProcessDialog = mobjCommon.showProgressDialog(mobjActivity, "",
                "Loading...", false);
    }
    @Override
    protected String doInBackground(URL... params) {
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {

        }
        switch (mcallIntentcond) {
        case 1:
            Intent i=new Intent(mobjActivity, Home.class);
            mobjActivity.startActivity(i);
            mobjActivity.finish();
            break;
        }

        return null;
    }
}

我们如何解决这个问题。谢谢

最佳答案

没有理由在这样的线程中运行 AsyncTask,您可以在 UI 线程上调用它。 AsyncTask 为您管理线程。

您在 doInBackground 方法中输入的代码会自动在后台线程中运行,您的 AsyncTask 上的其他方法在 UI 线程中运行,您可以直接与 UI 安全地交互。

关于android - 在线程内调用 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705570/

相关文章:

android - onBackPressed() 未被调用

android - 在 Android 智能手机中同时打开 Wifi 和 WifiHotspot

android - Firebase 身份验证的优势?

java - 初学者的 FragmentPagerAdapter

java - 使用UI线程显示toast消息?

android - 接收器上的 "Exported receiver does not require permission"意味着从系统服务接收

android - 移动应用磁贴主页的简单 GRID 布局 仅 CSS + HTML

android - Android 中的 ContentObserver

java - View 在 Android 布局中无法正确显示

java - 单击按钮从回收器 View 中删除项目。按钮是从回收器 View 外部设置的吗?