2011-10-07 72 views
0

目前我的應用程序從對話框和線程中的服務器獲取數據。 來電時應該做些什麼。 現在我正在這樣做。我想知道這種方法是對的還是別的什麼都要做。來電處理線程

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    Utility.debugger("PAUSE 1"); 
    if (ScreenReceiver.wasScreenOn) { 

        // this is the case when onPause() is called by the system due to a screen state change 
        Utility.killDialog(); 

        System.out.println("SCREEN TURNED OFF"); 

       } else { 

        Utility.debugger("PAUSE 2"); 

       // this is when onPause() is called when the screen state has not changed 
    } 

    super.onPause(); 

} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    Utility.debugger("PAUSE 3"); 
    if (!ScreenReceiver.wasScreenOn) { 

       // this is when onResume() is called due to a screen state change 

        System.out.println("SCREEN TURNED ON"); 

        Utility.debugger("PAUSE 4"); 
         Utility.resumeDialog(); 

       } else { 

        // this is when onResume() is called when the screen state has not changed 



      } 

    super.onResume(); 


} 


public static void killDialog() 
{ 
    if(dialog != null || dialog.isShowing()) 
    {dialog.dismiss(); 
     t.interrupt(); 
     try { 
      t.join(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

public static void resumeDialog() 
{ 
    if(dialog != null ) 
    { 
     dialog.setIndeterminate(true); 
     dialog.show(); 
     t.run(); 

    } 
} 

其中t是線程和對話框正在progressDialog。 我也喜歡暫停和恢復是設備進入睡眠狀態。

謝謝!

回答

0

它看起來像你真正想做的是爲用戶創建一個對話框。沒有爲這裏豐富的文檔:

http://developer.android.com/guide/topics/ui/dialogs.html

這裏有一個簡單的例子:

ProgressDialog progressDialog; 
progressDialog = new ProgressDialog(mContext); 
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
progressDialog.setMessage("Loading..."); 
progressDialog.show() 

當你想停止對話,呼籲

progressDialog.cancel() 

如果您對Android的線程好奇,我建議看看AsyncTask。這個類(結合Activity.runOnUiThread())應該可以處理Android上99%的線程問題。

http://developer.android.com/reference/android/os/AsyncTask.html

+0

我想在傳入呼叫來臨時停止對話框和正在運行的線程並在呼叫結束時重新啓動,因爲它會返回應用程序。 – voidRy

+0

@ user983364線程無法暫停。打斷他們通常是一個壞主意。但是,通常使用標誌來模擬這種行爲。例如'if(isPaused)Thread.sleep(100)' – spatulamania

+0

thakx for information :)。 – voidRy

0

而不是使用線程使用Asynck任務的其中將相同的Android主題。有四種方法 1. onPreExecute() 2. doInBackground(字符串...爲arg0) 3. onProgressUpdate(字符串值...) 4. onPostExecute(虛空結果)

首先啓動裏面的進度條onPreExecute()然後下載代碼在doInBackground()之後,然後在onPostExecute方法內的所有這些關閉進度條之後。

+0

會處理來電或必須完成某些操作來關閉對話並在來電時停止Asyn任務。 – voidRy

+0

是的它也可以處理來電。所有你需要的是在doInBackground(String ... arg0)背景中調用publishProgress(「finish」);它是內置的方法,它會調用內部的onProgressUpdate(String ... values)檢查值是否完成,然後關閉進度條。請通過以下鏈接:http://www.xoriant.com/blog/mobile-application-development/android-async-task.html –

+0

好的!我會試試:) – voidRy