2013-04-29 35 views
4

如果我啓動後臺線程,如果在線程終止之前從finish()開始的活動會發生什麼。線程是否會終止或者它會保持活着?活動結束後線程是否會死掉?

new Thread(new Runnable() { 
       public void run() { 
        while (mProgressStatus > 0) { 


         // Update the progress bar 
         mHandler.post(new Runnable() { 
          public void run() { 
           progressbar.setProgress(mProgressStatus); 
          } 
         }); 
        } 
       } 
      }).start(); 
+0

線程不會死亡,您將生成內存泄漏。 – 2013-04-29 03:14:21

+0

類似的問題在這裏問:[http://stackoverflow.com/questions/6208443/what-happens-to-an-android-thread-after-the-activity-that-c​​reated-it-is-destroye] – Martin 2016-04-08 11:35:47

回答

-2

因爲你知道你的線程/應用程序可以在任何時候死了,任何時候,一個電話崩潰到地面,並且電池是關閉的,你知道它的最後一件事是一個手機,它關閉在最快的方法。

Android的生命週期及其管理非常複雜,並沒有真正的答案,因爲在Google評論這類事情時,他們很喜歡「automagic」這個詞,所以他們肯定不會泄露任何內部細節這至少不是「普通老英語」。

有關於Android的第一個關於這個東西的Google IO,如果你想了解更多細節,你可以回到YouTube並搜索谷歌IO來談論Android生命週期。

不管怎樣,請記住,Android絕對不會授予您應用程序的生命週期和時間長度,您至少需要考慮以下變量:操作系統(Android)在做什麼以及用戶在做什麼,以及當用戶提供涉及Android需要處理的應用程序生命的輸入時,這兩件事情甚至可以混合在一起。

0

線程獨立於父母運行。線程從Thread.run()正常返回到JVM或由於未捕獲的異常返回而死亡。