2013-09-28 44 views
0

如果在方法執行期間發生某些活動生命週期事件,會發生什麼情況?
例如,我的活動有一些將JSON文本文件(幾十Kb)寫入磁盤的方法。設計錯了嗎? 或者,一般來說,考慮有兩條指令需要執行的情況:第一條執行重要操作,第二條指令根據第一條指令的結果更新一些數據。Android:做活動生命週期事件停止正在運行的方法嗎?

喜歡的東西:

value=performOperationAndYeldResult(); 
updateAppData(value); 

如果第一次調用之後和在第二生命週期事件occurrs,或在它的執行會發生什麼?
我將「長」操作放在服務中,但我無法爲整個應用程序中的每個關鍵數據更新創建服務。我想我錯過了一些東西,所以我無所畏懼。也許恢復或重新啓動的活動繼續運行,以便完成。 無論如何,我問這裏:方法是否完成,或繼續?

+1

強烈建議在服務中使用長時間運行的操作。爲什麼你不能使用服務? –

+0

這些操作發生在UI線程中嗎?如果是,我會建議在輔助線程中執行它們。發生在輔助線程中是安全的,即使活動被破壞,線程也會繼續運行。 –

+1

或者根據@NitinSethi回覆,使用服務或更好的AsyncTask。對於寫作操作,我建議實施一個AsyncTask。閱讀如何使用它。 http://developer.android.com/reference/android/os/AsyncTask.html –

回答

0
new PerformOperationAsyncTask(someValue); 

private class PerformOperationAsyncTask extends AsyncTask<Object, Void, Object> { 

     protected Long doInBackground(Object... values) { 

      //this is taking place in secondary thread   
      Object returnValue = performOperationAndYeldResult(values[0]); 

      return returnValues; 
     } 

     protected void onPostExecute(Object result) { 
      //this is taking place in the UI thread 
      updateAppData(value); 
     } 
    }