天天看點

廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:

 關鍵詞:Broadcast, 生命周期,繼承

本項目基本思路:

1.先建立一個ActivityCollector類用于管理所有的活動; 2.然後建立一個BaseActivity類作為所有活動的父類: 父類功能有二: 其一,用于輔助統籌管理本項目的所有活動。調用ActivityCollector類的方法,如類中的onCreate和onDestroy方法,所有從父類派生出去的子類,在建立時會被加入ActivityCollector的數組activities裡面,銷毀時則會從裡面被移除;用數組activities統籌本項目的活動,可以很容易實作銷毀所有活動的功能; 其二,随後我們将重寫本類的onResume和onPause方法,所有從父類派生出去的子類,在棧頂狀态(onResume()方法執行之後的處于準備互動的狀态)都會注冊一個接收器,接收廣播資訊,收到廣播資訊後執行onReceive方法,彈出對話框,随後銷毀所有活動,重新啟動LoginActivity,實作強制下線;在失去棧頂位置的時候,則将接收器銷毀;這樣強制下線的功能就不會依附于任何的界面,不管是在程式的任何地方,隻需要發出這樣一條廣播,就可以完成強制下線的操作了; 3.建立LoginActivity,作為登入界面,使用者輸入密碼和賬号,正确則通過跳轉到MainActivity,失敗則Toast提示; 4.MainActivity,簡單的一個按鈕,用于發送廣播;

源碼位址(碼雲): Lwp/AndroidDemo - 碼雲 Gitee.com

參考文獻:《第一行代碼(第2版)》

主要步驟:

先建立一個ActivityCollector類用于管理所有的活動:

右鍵包->new->Java Class:

廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:

然後建立一個BaseActivity類作為所有活動的父類:

廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
本父類功能有二: 其一,用于輔助統籌管理本項目的所有活動。如類中的onCreate和onDestroy方法,所有從本類派生出去的子類,在建立時會被加入ActivityCollector的數組activities裡面,銷毀時則會從裡面被移除; 其二,随後我們将重寫本類的onResume和onPause方法,所有從本類派生出去的子類,在棧頂狀态都會注冊一個接收器,在失去棧頂位置的時候,則将接收器銷毀;

建立LoginActivity:

廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
布局代碼:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
布局預覽圖:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
LoginActivity代碼:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
MainActivity的代碼,這裡不需要什麼花裡花俏的功能,隻需要弄一個按鈕實作強制下線的功能就可以了:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
修改BaseActivity,動态注冊一個廣播接收器:重寫本類的onResume和onPause方法,所有從本類派生出去的子類,在棧頂狀态都會注冊一個接收器,在失去棧頂位置的時候,則将接收器銷毀;
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
最後将主活動設定為LoginActivity而不再是MainActivity:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:

最後上運作結果圖:

密碼或賬号輸入錯誤時彈出提示:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
輸入正确,進入MainActivity:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟:
點選按鈕,彈出對話框,強制下線:
廣播的最佳實踐——實作強制下線功能(Android_Broadcast)主要步驟: