轉
看到這個圖感覺熟悉的兄弟姐妹們就可以直接略過本篇啦...因為我要將要把它們乙個個地拿出來長篇大論咯。
1當然,這個類得在androidmanifest.xml中配置以下才能使用。/**2
* 應用程式實體3*
@author
change4*
5*/6public
7private activitymanager activitymanager = null; //
activity管理類
8private executor excutor = null; //
執行緒池執行器
9public
程式中用來快取應用程式配置字段
10@override
11public
void
oncreate()
1617
public
activitymanager getactivitymanager()
2021
public
executor getexcutor()
runnable()
7 });
下面我們還會在baseactivity中使用它來獲取activitymanager。
二、activitymanager(該類用來管理程式中所有的activity例項,如返回時只需要呼叫endactivity()結束當前 activity,退出程式時呼叫finishallactivity()結束所有activity,此外還有跳轉到指定activity的方 法:finishallactivityexceptone,這些在頁面跳轉時都是很方便的)
這種設計**於物件導向的模擬,activity就相當於一疊撲克牌,我們只能看到最上面的一張,而且越後放上的就先展示,那麼用棧來管理最恰當不過了。
1如何使用更為恰當呢?接下來,我們看看baseactivity這個類,上面兩個類的基本使用均有體現。/**2
* activity管理類,防止activity跳轉混亂3*
4* @author
change5*/
6public
class
activitymanager
1415
/**16
* 單例項
17*
18*
@return
19*/
20public
static
activitymanager getinstance()
24return
activitymanager;25}
2627
28/**
29* 將activity移出棧
30*
31*
@param
activity
32*/
33public
void
popactivity(activity activity) 37}
3839
/**40
* 結束指定activity
41*
42*
@param
activity
43*/
44public
void
endactivity(activity activity) 50}
5152
/**53
* 獲得當前的activity(即最上層)
54*
55*
@return
56*/
57public
activity currentactivity()
6364
/**65
* 將activity推入棧內
66*
67*
@param
activity
68*/
69public
void
pushactivity(activity activity)
73activitystack.add(activity);74}
7576
/**77
* 彈出除cls外的所有activity
78*
79*
@param
cls80
*/81
public
void popallactivityexceptone(class extends activity>cls)
87if
(activity.getclass().equals(cls))
90popactivity(activity);91}
92}9394
/**95
* 結束除cls之外的所有activity,執行結果都會清空stack
96*
97*
@param
cls98
*/99
public
void finishallactivityexceptone(class extends activity>cls) else
107}
108}
109110
/**111
* 結束所有activity
112*/
113public
void
finishallactivity()
118}
119 }
三、baseactivity(所有專案中定義的activity的父類,一般來所它繼承activity,如果程式中需要用到fragment,請繼承fragmentactivity)
它的設計用到了繼承,有高耦合的特性,以至於所有子類都能直接訪問其中公用和受保護的方法。在其中執行了activity入棧操作,簡化了子類activity的處理。並且在銷毀activity讓棧中的對應物件引用彈出。維護stack內資料的真確性。
1其中在 .pushactivity(/**2
* activity基礎類,作為程式中所有activity的父類,便於管理,與公有方法的呼叫。3*
4* @author
change5*
6*/7public
class baseactivity extends
activity
1516
@override
17protected
void ondestroy()
2223
/**24
* activity跳轉
25*
@param
from
26*
@param
to27
* @param
data 攜帶資料
28*/
29protected
void goto(context from,class extends baseactivity>to,bundle data)
3536 }
this); //
將activity推入管理棧
寫**是枯燥的,但設計卻是有趣的,多思考,多觀察,也許會有不同的收穫,自勉,共勉。
所屬分類:
android
新建Android工程需要的開源專案
retrofit很有創意的一款開源網路框架,讓使用者自定義介面,並使用其提供的註解,對介面進行解析和呼叫,是square旗下的產品之一 動態 和反射。其實retrofit無非就是讓使用者建立介面,使用自己指定的規則進行網路訪問,把介面傳入retrofit,介面上附著的規則由retrofit進行層層解...
第十一周專案4 1 類族的設計 基類 點類
問題及 檔名稱 project.cpp 作 者 陳文青 完成日期 2015年5月21日 版 本 號 v1.0 問題描述 1 先建立乙個point 點 類,包含資料成員x,y 座標點 實現需要的成員函式,並設計main函式完成測試 程式輸入 程式輸出 include includeusing name...
C 設計抽象基類的策略
1 分析相關物件的需求,設計出一組實現公共功能的函式。2 將這些函式作為基類的虛函式 或純虛函式 它們定義了乙個 統一的公共介面。3 由該類基類派生出若干子類,在各子類中實現這些虛函式。includeusing namespace std class container 抽象類 virtual do...