2011-10-30 60 views
0

我有一個方法,當活動開始時需要運行。 我已經嘗試把它放在OnCreate上,但是如果一段時間內活動沒有受到任何影響,onCreate會被調用兩次(並且這種情況下,我正在檢查在線更新...所以需要一些時間)在活動開始時運行的Android方法而不是在創建時

這就是爲什麼我不能把更新方法在onCreate

任何想法?

謝謝你,羅恩

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.options); 
    checkUpdate(); 
} 

private void checkUpdate(){ 
    Runnable runnable = new Runnable() { 
     public void run() { 
      try 
      { 
       // create a web request to check if i have the latest update 
       HttpClient client = new DefaultHttpClient(); 
. 
. 
. 
. 
. 
     }; 
    new Thread(runnable).start(); 
+0

您的活動仍在執行,onCreate被再次調用?我不認爲這是可能的,除非你旋轉設備? –

+0

設備不旋轉,也許是因爲屏幕變暗了?但我沒有觸及它,並再次調用onCreate方法。 –

+0

它可能有助於查看您的活動的裸骨頭代碼。建議您可能應該將更新檢查放入AsyncTask中。 –

回答

1

使用一個布爾值,以確定是否該活動已經開始。

3

通常,您不希望在UI線程上執行需要一些時間執行的方法。 相反,您可能希望創建AsyncTask(或線程/處理程序)以在後臺運行該方法。另請參閱onStart()是否會幫助您從onCreate()移開一些邏輯。

+0

我試圖執行的方法是提高線程。 –

0

您可以在oncreate中執行該方法,但添加一個類布爾值字段來檢查您是否已經添加了運行該方法。

相關問題