从sqlite获取数据时的Android进度对话框

时间:2011-09-20 17:31:19

标签: android multithreading json http-post progressdialog

我试图从网上的例子中实现线程,asynctask,但没有一个按照我想要的方式运行。

我有一个类将数据发送到Web服务器。 它包含3个任务: - 抓住一个身份证 -get来自sql的数据并构建一个json文件 - 发送json文件

我想实现进度对话框或进度条以向用户等待显示进度。

我上次测试的progressdialog显示了从sqlite获取的数据基于Progress Bar Example。 麻烦的是,当我尝试生成我的文件超过2次时,线程没有启动...

在我的案例中,最好的做法是什么? 我有一个微调器来选择要发送的内容和一个要发送的按钮。

点击按钮时,基本上我有:

HttpResponse response = GetChantier(commentaire);
    //Checking response 
    if( response != null)
    {
        String _response=EntityUtils.toString(response.getEntity());
        int chantier_serveur = Integer.parseInt(_response.replaceAll("[\n\r]", ""))
        String fichier = DonneesToJson(db,chantier, chantier_serveur);
        HttpResponse response = SendJson ( chantier, fichier);
    }

我需要为DonneesToJson和SendJson实现进度。

DonnesToJson抓取游标然后在迭代游标时构建一个json文件。 SendJson是一个发送文件和2个字段的HttpPost。

我是java编程和线程的新手。 任何帮助表示赞赏。

问候。

1 个答案:

答案 0 :(得分:1)

使用Async任务执行后台任务,如下所示。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    new Asyn_Task().execute("name","title");
}


class Asyn_Task extends AsyncTask<Void, Void, Void> {
    private final ProgressDialog dialog = new ProgressDialog(Facebook_Post_View.this);
    // can use UI thread here
    protected void onPreExecute() {
        this.dialog.setMessage("Loading...");
        this.dialog.setCancelable(false);
        this.dialog.show();
    }
    @Override
    protected Void doInBackground(String... param) {
        // TODO Auto-generated method stub
                    name=params[0]; //Like
                    title=params[1];

         // Do your all Stuffs
       return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
    }
}

位置0 的名称中,名称可用,位置1 标题可用。同样,您可以根据需要传递值。

有关详细信息,请查看此Async Task