[問題] Handler or PropertyChange更新UI

看板AndroidDev作者 (Never Stop)時間10年前 (2014/04/02 16:58), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串1/1
我的問題有點難描述, 用程式碼呈現又有點困難,整包很多東西... 簡單的說,我希望我的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

04/02 17:10, , 1F
Android規定同時只能有一個Activity是running的狀態...
04/02 17:10, 1F

04/02 17:11, , 2F
所以我覺得...應該是改用Fragment或static member吧Orz
04/02 17:11, 2F

04/02 17:13, , 3F
不然就是 Intent.putExtras() 把更新資料傳給sub @@
04/02 17:13, 3F

04/02 17:42, , 4F
補充:背景的activity沒有即時更新沒關係,只要resume更新即可
04/02 17:42, 4F

04/02 18:18, , 5F
感謝樓上大大,我的困難在於class的數值是一直在變化的
04/02 18:18, 5F

04/02 18:18, , 6F
所以只有在一開始intent進去 後來還是不會更新T_T
04/02 18:18, 6F

04/02 18:45, , 7F
試看看oberver pattern
04/02 18:45, 7F

04/03 17:34, , 8F
Send Broadcast 試試
04/03 17:34, 8F

04/03 20:54, , 9F
你可以用一個service去管理背景TCP 的thread,並把需要的
04/03 20:54, 9F

04/03 20:55, , 10F
數值存在service 當你要啟動任一個Activity時 在跟這service
04/03 20:55, 10F

04/03 20:56, , 11F
sync 這種作法其實就很類似播放音樂的程式 Activity只管UI
04/03 20:56, 11F
文章代碼(AID): #1JEz582H (AndroidDev)