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

从sqlite获取数据时的Android进度对话框,android,multithreading,json,http-post,progressdialog,Android,Multithreading,Json,Http Post,Progressdialog,我试图实现线程,从web上的示例异步执行任务,但没有一个按照我想要的方式运行 我有一个类将数据发送到web服务器。 它包含3项任务: -拿到身份证 -从sql获取数据并构建json文件 -发送json文件 我想实现一个进度对话框或进度条,向等待的用户显示进度 我上次测试显示从sqlite抓取数据的progressdialog是基于。 问题是,当我尝试生成文件超过2次时,线程没有启动 那么,对我来说,最好的办法是什么呢? 我有一个微调器来选择要发送的内容和一个按钮来发送 单击按钮时,基本上我有:

我试图实现线程,从web上的示例异步执行任务,但没有一个按照我想要的方式运行

我有一个类将数据发送到web服务器。 它包含3项任务: -拿到身份证 -从sql获取数据并构建json文件 -发送json文件

我想实现一个进度对话框或进度条,向等待的用户显示进度

我上次测试显示从sqlite抓取数据的progressdialog是基于。 问题是,当我尝试生成文件超过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是一个HttpPost,它发送一个文件和两个字段

我对java编程和线程非常陌生。 谢谢你的帮助


关于。

使用异步任务执行后台任务,如下所示

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();
        }
    }
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
新建Asyn_任务()。执行(“名称”、“标题”);
}
类Asyn_任务扩展了AsyncTask{
private final ProgressDialog=新建ProgressDialog(Facebook\u Post\u View.this);
//可以在这里使用UI线程
受保护的void onPreExecute(){
this.dialog.setMessage(“加载…”);
this.dialog.setCancelable(false);
this.dialog.show();
}
@凌驾
受保护的Void doInBackground(字符串…参数){
//TODO自动生成的方法存根
name=params[0];//类似
标题=参数[1];
//做你所有的事情
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
if(this.dialog.isShowing()){
this.dialog.disclose();
}
}
}
在这些文件中,位置0处的名称可用,位置1处的标题可用。同样,您可以随意传递值


如需进一步参考,请检查此

使用异步任务执行后台任务,如下所示

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();
        }
    }
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
新建Asyn_任务()。执行(“名称”、“标题”);
}
类Asyn_任务扩展了AsyncTask{
private final ProgressDialog=新建ProgressDialog(Facebook\u Post\u View.this);
//可以在这里使用UI线程
受保护的void onPreExecute(){
this.dialog.setMessage(“加载…”);
this.dialog.setCancelable(false);
this.dialog.show();
}
@凌驾
受保护的Void doInBackground(字符串…参数){
//TODO自动生成的方法存根
name=params[0];//类似
标题=参数[1];
//做你所有的事情
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
if(this.dialog.isShowing()){
this.dialog.disclose();
}
}
}
在这些文件中,位置0处的名称可用,位置1处的标题可用。同样,您可以随意传递值


如需进一步参考,请检查此

在预执行函数中使用asynctask并调用progressDialog。如何在asynctask中传递参数?asynctask类似于类,因此,为它创建一个构造函数并使用它初始化其中的字段。@Cedric检查我的更新答案。如果发现任何困难,请告诉我。使用asynctask并在preExecute函数中调用progressDialog。如何在asynctask中传递参数?asynctask类似于类,所以,为它创建一个构造函数,并使用它初始化其中的字段。@Cedric检查我的更新答案。如果发现任何困难,请告诉我。谢谢Venky。这对我帮助很大,当我了解AsyncTask如何工作以及如何链接它们时,效果非常好!!我现在正在添加错误处理,一切看起来都很好。谢谢Venky。这对我帮助很大,当我了解AsyncTask如何工作以及如何链接它们时,效果非常好!!我现在正在添加错误处理,一切看起来都很好。