Android ProgressDialog需要一些时间才能显示在屏幕上

时间:2017-03-22 06:09:55

标签: android progressdialog

我附加了点击监听器到文本视图,在点击监听器里面有一个函数说f1被调用而在f1里面另一个函数说f2被调用。

在f2中我使用当前活动上下文创建了一个android ProgressDialog对象,并在progressDialog对象上调用了show function。 ProgressDialog需要花费时间在5-6秒左右出现在屏幕上。

我已经分析了我的代码,但无法理解为什么需要这么多时间?

  textView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

                ShowSyncDialog(); - f1
       }
   });

   public void ShowSyncDialog()
   {
       fnSyncOfflineData(); - f2
    }

   public void fnSyncOfflineData()
   { 
       ProgressDialog progressDialog = new ProgressDialog(context);
       progressDialog.show();

      //other code 
   }

1 个答案:

答案 0 :(得分:0)

您应该在AsyncTask中调用您的函数。此作品的开头也必须显示ProgressDialog。使用这样的东西:

public class YourTask extends AsyncTask<String, Void, String> {

    private Context mContext;
    private ProgressDialog progressDialog;

    public YourTask(Context context) {
        super();
        mContext = context;
        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("Your Message");
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog.show();
    }

    @Override
    protected String doInBackground(String... values) {
        // If you want to use 'values' string in here
        String values = values[0];

        String yourResult = yourFunction();

        return yourResult;
    }

    @Override
    protected void onPostExecute(String result) {
        progressDialog.dismiss();

        // Your task has done
        ...
    }
}

然后用以下方法调用此任务:

new YourTask(YourActivity.this).execute();

您可以更改任务doInBackground方法的返回类型。这只是一个示例,您可以搜索AsyncTask

祝你好运。