Android 在TimerTask中创建进度对话框

Android 在TimerTask中创建进度对话框,android,progressdialog,android-progressbar,Android,Progressdialog,Android Progressbar,我需要在这个类上创建一个进度对话框。我试图让它显示,而所有的方法都完成了。可能吗?也许有经验更丰富的人遇到过这个问题?在这个类中可以这样做吗,或者当我从其他活动调用此方法时需要这样做??: public class Data_synch extends TimerTask { private Context mContext; String FormsString; DatabaseDataHandler db; static String realLink;

我需要在这个类上创建一个进度对话框。我试图让它显示,而所有的方法都完成了。可能吗?也许有经验更丰富的人遇到过这个问题?在这个类中可以这样做吗,或者当我从其他活动调用此方法时需要这样做??:

public class Data_synch extends TimerTask {
    private Context mContext;
    String FormsString;
    DatabaseDataHandler db;
    static String realLink;
    String url = "/android/sync";
    User user;
    ProgressDialog pd;
    protected static final int DIALOG_OK= 0;
    ProgressDialog timeBar;
    public Data_synch(String realLin, Context context, User user) {
        mContext = context;
        this.user = user;
        // realLink = ((Link_holder)
        // mContext.getApplicationContext()).getLink();
        realLink = realLin;
        url = realLink + url;
        // pd = ProgressDialog.show(mContext, "", "Uploading photos", false);
    }

    @Override
    public void run() {
        new HttpAsyncTask().execute(url);


        // /* sync from sever */
        new SyncFromServer(realLink, true, false, false, false,false, user, mContext);
        new SyncFromServer(realLink, false, true, false, false,false, user, mContext);
        new SyncFromServer(realLink, false, false, true, false, false,user, mContext);
        new SyncFromServer(realLink, false, false, false, true, false,user, mContext);
        new SyncFromServer(realLink, false, false, false, false, true,user, mContext);
                try {

                    new SyncPhotos(realLink, user, mContext);

                } catch (final Exception e) {
                    System.out.println("SAKIU RAJONAS");
                    e.printStackTrace();
                }

    }

    public String POST(String x) {
        InputStream inputStream = null;
        String result = "";

        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
            // System.out.println("x == " + x);
            nameValuePairs
                    .add(new BasicNameValuePair("email", user.getEmail()));
            nameValuePairs.add(new BasicNameValuePair("password", user
                    .getPassword()));
            nameValuePairs.add(new BasicNameValuePair("prefix", user
                    .getPrefix()));

            nameValuePairs.add(new BasicNameValuePair("sync_data", x));
            // System.out.println(nameValuePairs);
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));

            HttpResponse httpResponse = httpclient.execute(httpPost);
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            inputStream = httpResponse.getEntity().getContent();
            if (inputStream != null) {
                result = convertInputStreamToString(inputStream);
            } else
                result = "Did not work!";
        } catch (Exception e) {
            Log.d("InputStream", "FAIL");
        }

        return result;
    }

    public static String convertInputStreamToString(InputStream inputStream)
            throws IOException {
        BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(inputStream));
        String line = "";
        String result = "";
        while ((line = bufferedReader.readLine()) != null)
            result += line;
        // System.out.println("result is " + result);
        inputStream.close();
        return result;

    }

    public class HttpAsyncTask extends AsyncTask<String, Void, String> {
        JSONObject json;
        final String is_synch = "1";
        String synch;
        String damn;
        JSONArray JsonObjectsArray = new JSONArray();

        public String getdamn() {
            return damn;
        }

        protected String doInBackground(String... urls) {

            String log = "nothing";
            db = new DatabaseDataHandler(mContext);

            List<Data> datas = db.getAllData();
            int nr_of_data = 0;
            for (Data cn : datas) {
                log = cn.getJson();
                // synch = cn.getSynch();
                // System.out.println(synch);
                // if(synch = "0")
                // System.out.println(synch);
                // if(synch == "0"){
                // cn.setSynch("1");
                try {
                    json = new JSONObject(log);
                    add_JsonObject_to_JSONArray(createJsonObjectString(json, cn));
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                nr_of_data++;

            }

            db.close();

            System.out
                    .println("WAWAWYWAWAWAWYWAWAWAWYWAWAWAWYWAWAWAWYWAWAWAWYWA");
            damn = JsonObjectsArray.toString();
            return POST(damn);

        }

        // private JSONArray PostJsonArray(JSONArray x){
        // JsonObjectsArray = ;
        //
        // return x;
        // }
        //

        // onPostExecute displays the results of the AsyncTask.
        @Override
        protected void onPostExecute(String result) {
            System.out.println(result);
        }

        private JSONArray add_JsonObject_to_JSONArray(JSONObject jsonobject) {

            JsonObjectsArray.put(jsonobject);

            return JsonObjectsArray;
        }

        private JSONObject createJsonObjectString(JSONObject jsonobject, Data cn)
                throws JSONException {
            String comment = "";
            jsonobject.put("comment", comment);
            // System.out.println("xxxx : "+ jsonobject);

            return jsonobject;
        }
    }

}
公共类数据\u同步扩展TimerTask{
私有上下文;
字符串形式字符串;
DatabaseDataHandler数据库;
静态字符串realLink;
字符串url=“/android/sync”;
用户;
进展性帕金森病;
受保护的静态最终整数对话框\u OK=0;
进程对话框时间条;
公共数据\u同步(字符串realLin、上下文、用户){
mContext=上下文;
this.user=用户;
//realLink=((链接固定器)
//mContext.getApplicationContext()).getLink();
realLink=realLin;
url=realLink+url;
//pd=ProgressDialog.show(mContext,“,”上传照片“,false);
}
@凌驾
公开募捐{
新建HttpAsyncTask().execute(url);
///*从服务器同步*/
新的SyncFromServer(realLink、true、false、false、false、false、user、McContext);
新SyncFromServer(realLink、false、true、false、false、false、user、McContext);
新的SyncFromServer(realLink、false、false、true、false、false、user、McContext);
新的SyncFromServer(realLink、false、false、false、true、false、user、McContext);
新SyncFromServer(realLink、false、false、false、false、true、user、McContext);
试一试{
新同步照片(realLink、用户、McContext);
}捕获(最终异常e){
System.out.println(“SAKIU RAJONAS”);
e、 printStackTrace();
}
}
公共字符串POST(字符串x){
InputStream InputStream=null;
字符串结果=”;
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url);
List nameValuePairs=新的ArrayList(5);
//System.out.println(“x==”+x);
nameValuePairs
.add(新的BasicNameValuePair(“电子邮件”,user.getEmail());
添加(新的BasicNameValuePair(“密码”),用户
.getPassword());
添加(新的BasicNameValuePair(“前缀”),用户
.getPrefix());
添加(新的BasicNameValuePair(“sync_数据”,x));
//System.out.println(nameValuePairs);
setEntity(新的UrlEncodedFormEntity(nameValuePairs,“UTF-8”);
HttpResponse HttpResponse=httpclient.execute(httpPost);
int statusCode=httpResponse.getStatusLine().getStatusCode();
inputStream=httpResponse.getEntity().getContent();
如果(inputStream!=null){
结果=convertInputStreamToString(inputStream);
}否则
结果=“不起作用!”;
}捕获(例外e){
Log.d(“输入流”、“失败”);
}
返回结果;
}
公共静态字符串转换器InputStreamToString(InputStream InputStream)
抛出IOException{
BufferedReader BufferedReader=新的BufferedReader(
新的InputStreamReader(inputStream));
字符串行=”;
字符串结果=”;
而((line=bufferedReader.readLine())!=null)
结果+=行;
//System.out.println(“结果为”+结果);
inputStream.close();
返回结果;
}
公共类HttpAsyncTask扩展了AsyncTask{
JSONObject json;
最后一个字符串是_synch=“1”;
串同步;
该死的绳子;
JSONArray JsonObjectsArray=新的JSONArray();
公共字符串getdamn(){
返回该死的;
}
受保护的字符串doInBackground(字符串…URL){
String log=“无”;
db=新的DatabaseDataHandler(mContext);
List data=db.getAllData();
int nr_的_数据=0;
数据(cn:datas){
log=cn.getJson();
//synch=cn.getSynch();
//系统输出打印项次(同步);
//如果(synch=“0”)
//系统输出打印项次(同步);
//如果(同步==“0”){
//cn.setSynch(“1”);
试一试{
json=新的JSONObject(日志);
将_JsonObject_添加到_JSONArray(createJsonObjectString(json,cn));
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
nr_的_数据++;
}
db.close();
系统输出
.println(“哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇”);
damn=JsonObjectsArray.toString();
返回岗位(该死);
}
//私有JSONArray PostJsonArray(JSONArray x){
//JsonObjectsArray=;
//
//返回x;
// }
//
//onPostExecute显示异步任务的结果。
@凌驾
受保护的void onPostExecute(字符串结果){
系统输出打印项次(结果);
}
私有JSONArray将_JsonObject_添加到_JSONArray(JsonObject JsonObject){
JsonObjectsArray.put(jsonobject);
返回JSONObject数组;
}
私有JSONObject CreateJSONObject字符串(JSONObject JSONObject,数据cn)
抛出JSONException{
字符串注释=”;
jsonobject.put(“注释”,注释);
//System.out.println(“xxxx:+jsonobject”);
返回jsonobject;
}
}
}

您必须使用各种机制之一将UI工作推回到UI线程,因为它无法在计时器线程上完成。已通过传递progressdia解决了此问题