展会信息港展会大全

使用自定义的Activity栈来管理android的Activity
来源:互联网   发布日期:2016-01-14 10:10:37   浏览:865次  

导读:在进行BlackBerry程序开发的时候,BlackBerry提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使用UiApplication.getUiApplication().getActiveScreen()来得到位于最上一层的Screen的实例,并......

在进行BlackBerry程序开发的时候,BlackBerry提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使用UiApplication.getUiApplication().getActiveScreen()来得到位于最上一层的Screen的实例,并且使用UiApplication.getUiApplication().popScreen()来关闭一个Screen或关闭当前最上一层的 Screen,但是Android却未提供相应的功能,只能在一个Activity的对象里面调用finish来关闭自己,不能关闭其他的 Activity。比如我们想实现一个功能从屏幕A >屏幕B >屏幕C >屏幕D,然后在在转到屏幕D之前将屏幕B和C关闭,在屏幕 B和屏幕C界面点击会退按钮都可以回退到上一个屏幕,但是在屏幕D上点击会退按钮让其回退到A,此外在一些循环跳转的界面上如果不在合适的地方将一些不需要的屏幕关闭,那么经过多次跳转后回导致内存溢出。对此我们可以设计一个全局的Activity栈,使用这个栈来管理Activity。管理 Activity的类的定义如下:

[Java]代码

01

import java.util.Stack;

02

03

import android.app.Activity;

04

05

public class ScreenManager {

06

private static Stack<Activity> activityStack;

07

private static ScreenManager instance;

08

privateScreenManager(){

09

}

10

public static ScreenManager getScreenManager(){

11

if(instance==null){

12

instance=new ScreenManager();

13

}

14

return instance;

15

}

16

public void popActivity(){

17

Activity activity=activityStack.lastElement();

18

if(activity!=null){

19

activity.finish();

20

activity=null;

21

}

22

}

23

public void popActivity(Activity activity){

24

if(activity!=null){

25

activity.finish();

26

activityStack.remove(activity);

27

activity=null;

28

}

29

}

30

public Activity currentActivity(){

31

Activity activity=activityStack.lastElement();

32

return activity;

33

}

34

public void pushActivity(Activity activity){

35

if(activityStack==null){

36

activityStack=new Stack<Activity>();

37

}

38

activityStack.add(activity);

39

}

40

public void popAllActivityExceptOne(Class cls){

41

while(true){

42

Activity activity=currentActivity();

43

if(activity==null){

44

break;

45

}

46

if(activity.getClass().equals(cls) ){

47

break;

48

}

49

popActivity(activity);

50

}

51

}

52

}

赞助本站

人工智能实验室

相关热词: 自定义的Activity Activity

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港