作者tuzr (Never Stop)
看板AndroidDev
標題[問題] Handler or PropertyChange
時間Wed Apr 2 16:58:44 2014
我的問題有點難描述,
用程式碼呈現又有點困難,整包很多東西...
簡單的說,我希望我的class當中數值改變的時候,可以發message給兩個Activity,
讓那兩個Activity的UI做出對應的改變。
前言:
兩個Activity,一個是MainActivity 內容顯示各data class的數值(Gridview)
一個是SubActivity extends Activity
implements java.beans.PropertyChangeListener
一個data class,內容有int value (以下代稱class)
一個背景Thread 一直再跑TCP socket,
當收到資料,會去改變class中的value,
其中利用class.setValue()來改變class中的數值。
需求:
MainActivity會顯示class中的value。
在MainActivity點按鈕會啟動SubActivity,
SubActivity會顯示class當中的value。
做法:
1.採用PropertyChangeListener的做法,
在class中用firePropertyChange去通知兩個Activity做改變。
但這樣的做法在每次SubActivity啟動的時候,都無法取得class正確的數值。
(在SubActivity啟動時,加入PropertyChangeListener到class裡面)
因為第一個方法不行,朋友建議使用Handler來做。
(原Po以前只有用過Handler是跨Thread傳遞數值。)
2.使用Handler
在class裡面宣告Handler,在MainActivty的View class裡面建立接收訊息的Handler()
但是,完全收不到class發過來的訊息!!! 囧
請問版友們,是否我有誤解Handler的用法?
另外關於這樣的需求,有沒有建議的解決方法呢?
請多指教~謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.208.253
※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1396429128.A.091.html
→ tails32100:Android規定同時只能有一個Activity是running的狀態... 04/02 17:10
→ tails32100:所以我覺得...應該是改用Fragment或static member吧Orz 04/02 17:11
→ tails32100:不然就是 Intent.putExtras() 把更新資料傳給sub @@ 04/02 17:13
→ tuzr:補充:背景的activity沒有即時更新沒關係,只要resume更新即可 04/02 17:42
→ tuzr:感謝樓上大大,我的困難在於class的數值是一直在變化的 04/02 18:18
→ tuzr:所以只有在一開始intent進去 後來還是不會更新T_T 04/02 18:18
推 btsken:試看看oberver pattern 04/02 18:45
→ mingyaw:Send Broadcast 試試 04/03 17:34
推 sdyy:你可以用一個service去管理背景TCP 的thread,並把需要的 04/03 20:54
→ sdyy:數值存在service 當你要啟動任一個Activity時 在跟這service 04/03 20:55
→ sdyy:sync 這種作法其實就很類似播放音樂的程式 Activity只管UI 04/03 20:56