【问题标题】:Modal HUD on asynctask异步任务上的模态HUD
【发布时间】:2012-08-16 14:31:19
【问题描述】:

我正在 Android 上做一些事情。将有一个菜单,当访问时,从服务器(500+)请求相当大的用户列表,大约需要 5 秒。在此期间,应用程序冻结。如何在用户知道正在发生某些事情并且在完成之前无法触摸它的地方显示进度 hud(如 MBProgressHud)。

MBProgressHud:

【问题讨论】:

    标签: android


    【解决方案1】:

    使用异步任务:

    public class MyAsyncTask extends AsyncTask<Void, Void, Result>{
    
                            private Activity activity;
                            private ProgressDialog progressDialog;
    
                public MyAsyncTask(Activity activity) {
                                super();
                    this.activity = activity;
                }
    
                @Override
                protected void onPreExecute() {
                super.onPreExecute();
                    progressDialog = ProgressDialog.show(activity, "Loading", "Loading", true);
                }
    
                @Override
                protected Result doInBackground(Void... v) {
                //do your stuff here
                return null;
    
                }
    
                @Override
                protected void onPostExecute(Result result) {
                    progressDialog.dismiss();
                    Toast.makeText(activity.getApplicationContext(), "Finished.", 
                            Toast.LENGTH_LONG).show();
                }
    
    
    }
    

    从活动中调用它:

    MyAsyncTask task = new AsyncTask(myActivity.this);
    task.execute();
    

    【讨论】:

      【解决方案2】:

      您需要使用AsyncTaskProgressDialog 来实现此功能。它将在单独的线程上卸载繁重的工作(网络调用),将您的 UI 线程设置为不受 ANR(应用程序无响应)的影响。

      欲了解更多信息,请阅读this 答案。

      【讨论】:

        猜你喜欢
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多