我附加了点击监听器到文本视图,在点击监听器里面有一个函数说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
}
答案 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
。