2012-12-19 55 views
0

我面對我的app.Actually問題凍結後臺活動,有我在其中的圖像發送到server.In XML佈局文件的活動我用一個進度條view.The進度條當圖像加載到服務器時開始加載,並在工作完成時關閉。一切工作正常。問題是當進度條處於運行狀態時,後臺活動仍處於活動狀態。我想在進度條處於runnung時凍結後臺活動狀態。代碼如下。當進度條運行

postPic.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v){ 


     mProgressBar.setVisibility(View.VISIBLE); 


       new Thread(){ 

       @Override 
       public void run() { 


       //here the code to post image to server 

        handler.sendEmptyMessage(0); 


       } 


      }.start(); 
      } 

     } 

     private Handler handler = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 
       try { 


        mProgressBar.setVisibility(View.GONE); 


         } 

         else if(messagePostingItems.equalsIgnoreCase("Success")){ 

         startActivity(new Intent(PostPhoto.this,PostPicDialog.class)); 

        } 
      }; 
    }); 

請幫我解決這個問題。

回答

0

如果您想在執行其他操作時「凍結」該活動,則適當的模式是使用AlertDialog。將進度條放在對話框上,每當完成操作時,關閉對話框。

但要記住的是,使用可以點擊主頁按鈕可隨時他/她想要的東西,會給你一些額外的頭痛。

-1

你不能。

'凍結後臺活動'是UI線程,如果您嘗試停止UI線程,您將導致ANR(活動無響應),用戶將可以選擇強制關閉您的應用程序。

然而,如果你想阻止什麼,那就是你說的是「還在動」,那麼你應該這樣做,在你的onClick方法旁邊顯示的對話框,並解僱了。一個簡單的解決方案是啓動一個新的活動,其中包含進度對話框和白色背景。然後,活動生命週期爲您完成大部分工作。

或者把你的進度在對話框即ProgressDialog,並顯示給用戶。這被稱爲模態對話框。

-1

使用的AsyncTask ..... 爲如..

private class abc extends AsyncTask<Void, Void, String> { 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
        //start the progress dialog 
    } 

    protected void onPostExecute(String s) { 
     //dismiss the dialog 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     // TODO Auto-generated method stub 
     //send image to server code 
     return null; 
    } 
} 

,然後在onCreate()方法調用

new abc().execute(); 
0

最後我做了that.Those誰所面臨的同樣的問題,我的解決方案肯定會幫助他們。 只需在活動類中創建Dialog類的對象。

Dialog mdialog=new Dialog(this); 

    mdialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    mdialog.setContentView(R.layout.custom_progress_dialog); 
    mdialog.getWindow().setBackgroundDrawableResource (android.R.color.transparent); 


    mdialog.show(); 

的custom_progress_dialog如下: -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 


<ProgressBar 
    android:id="@+id/pbCustomDialog" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:visibility="visible" /> 

</LinearLayout>