兩個Activity之間的觀察者模式

2021-07-10 23:18:59 字數 1021 閱讀 6458

需求是在閃屏頁面啟動定位功能,在mainactivity中更改位置資訊。如果定位功能在mainactivity生成之前完成。則在mainactivity初始化時就有位置資訊。若由於網路原因等在mainactivity生成之後才完成定位,這時候需要通知mainactivity改變定位資訊。就涉及到了觀察者模式。

最初我的想法是將閃屏頁面設為具體通知者,將mainactivity設為具體觀察者。結果在給通知者新增觀察者的時候發現了問題。因為在閃屏頁面中mainactivity還沒有被建立。也就沒有mainactivity物件。這就沒法給觀察者設定監聽了。

解決方法是將設定監聽的過程放到mainactivity中,而通知者設定為乙個單例的類。而觀察者依然是mainactivity。這樣如果定位在mainactivity建立之前執行完成,則不需要繫結監聽。如果在mainactivity建立之後執行完成,則mainactivity把自身設定為觀察者。在定位結束之後就會由通知者傳送通知給觀察者。

具體**:

mainactivity中繫結監聽

private igetcitynamelistener getcitynamelistener;

if (city_name != null) else

通知者類:

public class eventlistener implements igetcitynamelistener

// 單例模式使兩個activity使用同乙個通知者類物件。

public static eventlistener geteventlistener() }}

return eventlistener;

}@override

public void addweacher(icitynamewacher citynamewacher)

@override

public void removeweacher(icitynamewacher citynamewacher)

@override

public void sendchange() }}

封裝類中實現另外兩個Activity之間的跳轉

1.在乙個封裝類中實現另外兩個activity之間的跳轉時,要在類中宣告當前要跳轉的頁面。定義activity類,宣告mainactivity,命名任意 activity mainactivity 設定set方法用來對它賦值 public void setmainactivity activity ...

兩個Activity之間重複相互跳轉時遇到的坑

最近在做的乙個應用,主體為兩個activity,互動時需要來回在兩個activity之間跳轉,首先act a先啟動,然後act a啟動act b,之後act b可以通過startactivity 沒有其他方法了吧?再次回到act a,同樣在act a也可以再次進入act b 其中a b我們只需要初始...

兩個Activity切換例子

activity01 import android.content.intent import android.os.bundle import android.view.view import android.widget.button public class activity01 extend...