2013-05-31 30 views

回答

0

你不應該阻止你的UI線程。在我看來,你這樣做,你可能會得到ANR(應用程序沒有響應異常)。如果你正在UI線程上做更新,您必須使用工作線程。工作線程異步更新UI線程而不會阻止它。

的例子:

class workerThread extends Thread { 
     public void run() { 
        final View play = getActivity() 
          .findViewById(R.id.play); 
        play.post(new Runnable() { 
         public void run() { 
         //put all your time taking tasks inside this post runnable.Here you may implement updateprogressbar etc 
          play.performClick(); 
         } 
        }); 
       } 
     } 
    workerThread = new workerThread(); 
    workerThread.start(); 

您可以考慮使用AsyncTask也可處理大部分樣板代碼自身。

您可以根據需要更改背景,但應用程序不穩定。如果你堅持這樣做,只是建立在你看來一個ProgressDialog和更新它,你適合:

Example: 
mProgressDialog = new ProgressDialog(getActivity()); 
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    mProgressDialog.setTitle(R.string.progress_dialog_loading); 
    mProgressDialog.setCancelable(true); 
    mProgressDialog 
      .setOnCancelListener(new DialogInterface.OnCancelListener() { 
       public void onCancel(DialogInterface dialog) { 
        mLoadingKeepGoing = false; 
       } 
      }); 

    mProgressDialog.show(); 

線程和進程相當複雜topics.Y OU需要研究和實踐了很多。這裏有一些資源,我發現你:

1. Processes and threads for android doc

2. Worker thread blog post

3. Another blog post

4. On stackoverflow

+0

但是,我可以更改當前主題樣式的默認背景嗎? –

+0

已更新答案 –

+0

更改樣式需要您「activity.recreate()」您的活動,您當前的活動將需要重新創建,以確保您不希望它發生。 –

0

兩個視圖設計你的活動。

-Loading layout. 
-Second layout. 

現在XML設置第二個佈局能見度「水漲船高」或「隱形」

現在你的第二個佈局被加載後。(使用異步任務,會做加載在後面使用僞代碼):

class Task extends AsyncTask<Void,Void,Void>{ 
    doInBackGround(){ 
    Load your content 
    } 
    onPostExecute(){ 
    set the visibility here; 
    } 

將加載佈局設置爲「不可見」,第二個佈局設置爲可見。

您可以在視圖之間添加動畫,使其看起來更好。