84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
有个代码优化的问题,假设现在项目有4个Activity依次跳转:A》B》C》D
有一些公共数据 B,C,D都需要,是用Intent依次传递,还是直接写成public static,或者更好的方法?
现在D界面进行了一些操作,希望返回到A时(注意:不是D直接跳到A,而是D,C,B回退到A)刷新界面。除了用标志位,更优的方法是?
来,畅所欲言吧
使用事件匯流排的函式庫啊,推薦使用Eventbus好處:
傳遞的資料序列化就不需要了
使用觀察者模式,解耦合
1.如果是常數的話,可以寫個Constant類專門存放。 2.可以透過startActivityForResult依序開啟activity,返回的時候可以在onActivity根據Intent中的資料以及requestCode,resultCode進行判斷和傳遞,但是程式碼肯定是不夠清爽的。
需求並不是特別清晰. 場景很像登入註冊的情景: 點擊登入頁面, 忘記密碼, 然後執行完操作, 直接返回完成登入.
如果BC在返回時沒有任何交互要求, 並且對A也沒有特別要求, 那就直接把launchMode设置成singleInstance or singleTop(处理和前者不一样)结合Activity#onNewIntent(...)來實現吧
launchMode
singleInstance
singleTop
Activity#onNewIntent(...)
如果有交互要求, 就老老實實的一級一級返回吧.
另外, 也可以直接使用EventBus的庫(EventBus, otto, RxBus都是可以的, 可以使用EventBus的场景也可以考虑使用LocalBroadcastManager), 只是需要考慮A萬一被系統回收後的處理情景.
EventBus
otto
RxBus
LocalBroadcastManager
p.s. 靜態全域方法就免了吧....
使用事件匯流排的函式庫啊,推薦使用Eventbus
好處:
傳遞的資料序列化就不需要了
使用觀察者模式,解耦合
1.如果是常數的話,可以寫個Constant類專門存放。
2.可以透過startActivityForResult依序開啟activity,返回的時候可以在onActivity根據Intent中的資料以及requestCode,resultCode進行判斷和傳遞,但是程式碼肯定是不夠清爽的。
如果BC在返回時沒有任何交互要求, 並且對A也沒有特別要求, 那就直接把
launchMode
设置成singleInstance
orsingleTop
(处理和前者不一样)结合Activity#onNewIntent(...)
來實現吧如果有交互要求, 就老老實實的一級一級返回吧.
另外, 也可以直接使用EventBus的庫(
EventBus
,otto
,RxBus
都是可以的, 可以使用EventBus的场景也可以考虑使用LocalBroadcastManager
), 只是需要考慮A萬一被系統回收後的處理情景.p.s. 靜態全域方法就免了吧....