作者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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1396429128.A.091.html
1F:→ tails32100:Android规定同时只能有一个Activity是running的状态... 04/02 17:10
2F:→ tails32100:所以我觉得...应该是改用Fragment或static member吧Orz 04/02 17:11
3F:→ tails32100:不然就是 Intent.putExtras() 把更新资料传给sub @@ 04/02 17:13
4F:→ tuzr:补充:背景的activity没有即时更新没关系,只要resume更新即可 04/02 17:42
5F:→ tuzr:感谢楼上大大,我的困难在於class的数值是一直在变化的 04/02 18:18
6F:→ tuzr:所以只有在一开始intent进去 後来还是不会更新T_T 04/02 18:18
7F:推 btsken:试看看oberver pattern 04/02 18:45
8F:→ mingyaw:Send Broadcast 试试 04/03 17:34
9F:推 sdyy:你可以用一个service去管理背景TCP 的thread,并把需要的 04/03 20:54
10F:→ sdyy:数值存在service 当你要启动任一个Activity时 在跟这service 04/03 20:55
11F:→ sdyy:sync 这种作法其实就很类似播放音乐的程式 Activity只管UI 04/03 20:56