【问题标题】:Progress Dialog not show on onActivityResult functiononActivityResult 函数上不显示进度对话框
【发布时间】:2011-04-04 09:05:21
【问题描述】:

我一直在开发应用程序,我有两个活动。
第一个 Activity 调用 Second 以获取下载 url。

在第一个 Activity 的 OnActivityResult 函数中。有一个 ProgressDialog 显示使用该 url 下载图像的状态。

问题是该活动中没有显示进度对话框。

protected void onActivityResult(int requestCode, int resultCode, Intent imagePicked) 
    {       
        super.onActivityResult(requestCode, resultCode, imagePicked);
            if(resultCode==RESULT_OK)
            {

                ProgressDialog progressDialog=ProgressDialog.show(this, "", "Loading Image");
                switch(requestCode) 
                {
                    case CharacterSelector.GetFaceBookImage:
                        //Toast.makeText(this, "onFacebookimageresult", Toast.LENGTH_SHORT).show();
                        String ImageUrl=imagePicked.getStringExtra("DownloadLink");
                        WebService getImage=new WebService(ImageUrl);

                        Log.d("Selected Img url", ""+ImageUrl);  
                        InputStream inputStream;
                        try 
                        {
                            inputStream = getImage.getHttpStream(ImageUrl);
                            getImage=null;
                            Bitmap bitmap=BitmapFactory.decodeStream(inputStream);
                            inputStream=null;
                             mybitmapDrawable=new BitmapDrawable(bitmap);
                            addImageUserImage(mybitmapDrawable.mutate());
                            progressDialog.dismiss();
                            bitmap=null;
                        }
                        catch (IOException e)
                        {
                            //Show server Error message:
                            e.printStackTrace();
                        }

                        break;

问候, 刽子手

【问题讨论】:

    标签: android android-activity progressdialog


    【解决方案1】:

    您不应在主线程上执行长时间运行的任务(即通过网络获取图像),因为这会阻止 UI 重绘。

    使用AsyncTask在后台执行长时间运行的任务,同时更新UI。

    【讨论】:

    • 是的! .整个屏幕空白一段时间,然后显示下载的图像。我将使用 AsyncTask 进行此操作。感谢您的时间-:)。
    【解决方案2】:

    如果您的 WebService 类是异步下载的,则在显示后立即调用关闭,因此您的进度对话框会同时出现和消失。

    如果您的 Webservice 类同步下载,则可能会导致 ANR,并且您的活动可能会被系统终止。您必须使用 AsyncTask 在另一个线程中使用它,例如

    【讨论】:

      【解决方案3】:

      开始一个新线程

      verlauf = ProgressDialog.show(ctx, "Infrarotauslesung", "initialisiere Bluetooth",true,false);
          new Thread(){
               @Override
              public void run(){ 
                               Looper.prepare();
              }.start();
      

      【讨论】:

        【解决方案4】:

        我认为ProgressDialog 出现的时间很短。您应该在使用请求代码CharacterSelector.GetFaceBookImage 开始Activity 之前显示它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多