如何在AsyncTask Android中获取用户输入

时间:2016-11-16 04:36:38

标签: android android-asynctask

我有一个场景,我需要AsyncTask之间的用户输入,但doInBackground无法显示UI。 场景: 按钮点击,将有服务电话,根据服务电话的结果,我想显示确认对话框,如果用户点击是,那么将有另一个服务电话,如果用户点击否则接着不同的服务电话。面对显示ProgressDialog的问题。

  • 计划工作流程:

    btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    
                bool result = Method1();
                if(result){
                                ShowConfirmation(new YesCallBackHelper() {Method2();}, new NoCallBackHelper() {Method3();});
                }
                else{
                                Method3();
                }
    
        }
    });
    
    
    private bool Method1()
    {
        return ServiceCall1();
    }
    
    private bool Method2()
    {
        return ServiceCall2();
    }
    
    private bool Method3()
    {
        return ServiceCall3();
    }
    

2 个答案:

答案 0 :(得分:0)

onPreExecute() {
   // some code #1
}

doInBackground() {
    runOnUiThread(new Runnable() {
                public void run() {
                    // some code #3 (Write your code here to run in UI thread)

                }
            });
}

onPostExecute() {
   // some code #3
}

你可以使用runonuithread来操作来自asynctask的UI

答案 1 :(得分:0)

您无法在doInBackgroud()方法中处理用户互动。但是,您可以执行onPostExecute()方法 例如:

protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
 }

在后台计算完成后,在UI线程上调用OnPostExecute。背景计算的结果作为参数传递给该步骤。 AsyncTask中的第三个参数是您在onPostExecute()

中作为参数获得的对象类型

文档链接:here

干杯!