簡體   English   中英

Android:更改方向后恢復暫停的線程

[英]Android: Resuming a paused Thread after an orientation change

我有一個涉及線程並從方向更改中恢復的問題。 我看到了很多很好的答案,涵蓋了線程或方向變化,但很少有涉及這兩者的寶貴答案。 這是涵蓋我的問題的一般情況:

  1. 應用程序啟動,包含一個活動:一個TextView填充了變量“ count”,最初為0,包含一個START和一個STOP按鈕。
  2. “開始”按鈕啟動線程(使用“線程”),該循環循環增加數字並更新TextView。
  3. 停止按鈕設置布爾標志,以便線程退出。
  4. 所有變量都是全局和易失的,Object變量信號用於控制線程。

現在,處理方向變化的最佳方法是什么。 我假設我:

  • 在onPause()中,我調用signal.wait()來暫停線程
  • 將變量“ counter”保存在onSaveInstanceState()上
  • 在onResume()中,我從onRestoreInstanceState()返回“計數器”

由於onCreate()將為“信號”創建一個新的對象,如何重新建立到當前正在等待()的線程的鏈接,以便可以調用notify()並將其恢復?

我已盡力解釋了這一點,我將嘗試提供所要求的其他信息。

設計活動的生命周期,以便可以根據系統需求或用戶交互來銷毀和重新創建活動,因此,一般而言,當這些生命周期發生變化時,也應銷毀並重新創建任何應用內操作。 例外情況是長時間運行的進程在后台運行,而不是活動(如服務)。

因此,要回答您的問題,而不是嘗試暫停和恢復線程,最好在Activity重新啟動時簡單地重新啟動線程,然后將線程的計數器變量作為計數終止的指示器,從而更好地線程化。 您已經將這個變量保存在savedInstanceState中,因此只需在Activity的開始抓取它,然后將其傳遞到(新)線程中繼續計數即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM