Android 项目开发必备-Activity管理栈之ActivityManager的建立

在我们日常开发当中你一定为无缘无故的内存泄漏而烦恼,或者因为多个Activity互相跳转而烦恼,这时候我们就需要一个利器-ActManager.有了这个帮助类我们就可以省去静态去写一些activity启动模式了。
##设置Actmanager为静态变量:
因为我们全局只需要一个Actmaanager,所有我们把它设置为静态变量,放在静态区域.
```
private static ActManager instance = new ActManager();


    public static ActManager Instance() {
        return instance;
    }
```
##设置保护重复跳转
```


    /**
     * 防止页面短时间重复跳转
     *
     * @return true:可以跳转 false:不跳转
     */
    private boolean checkForward(Context context) {
        Activity activity = null;
        boolean flag = true;
        try {
            activity = (Activity) context;
        } catch (Exception e) {
            Logger.output("Warning!!! ApplicationContext");
            //说明是ApplicationContext
        }


        long time = Calendar.getInstance().getTimeInMillis();
        if (null != activity) {
            if (null != lastAct) {
                //如果是相同activity,并且在150ms内跳转多次,则屏蔽多次跳转
                if (time - lastForwardTime < 150 && activity == lastAct) {
                    flag = false;
                }
            }
        }
        lastForwardTime = time;
        lastAct = activity;
        return flag;
    }


```
##设置基础跳转方法
intent 跳转
```
    /**
     * 跳转至下一页面--intent跳转
     * 可以调系统相册等
     * @param packageContext context
     * @param intent intent
     */
    public void forwardActivity(Context packageContext, Intent intent) {
        if (checkForward(packageContext)) {
            packageContext.startActivity(intent);
        }
    }
```
指定类名跳转
 ```
 /**
     * 跳转至下一页面
     *
     * @param packageContext context
     * @param cls class
     */
    public void forwardActivity(Context packageContext, Class<?> cls) {
        if (checkForward(packageContext)) {
            Intent intent = new Intent(packageContext, cls);
            packageContext.startActivity(intent);
        }
    }


```
带参数跳转,这个参数可以是String,int,long,double,boolean 我只举一个String的例子
```
    /**
     * 跳转至下一页面, 传递 String参数
     */
    public void forwardActivity(Context packageContext, Class<?> cls, String key, String extra) {
        if (checkForward(packageContext)) {
            Intent intent = new Intent(packageContext, cls);
            intent.putExtra(key, extra);
            packageContext.startActivity(intent);
        }
    }
```
获取当前activity
```
 /**
     * 获取当前的 activity
     *
     * @return act
     */
    public Activity currentActivity() {
        if (activityStack == null || activityStack.isEmpty()) {
            return null;
        }
        return activityStack.lastElement();
    }
```
Activity入栈,一般放在Base类的onCreate()方法里
```
    /**
     * 将该 activity 入画面栈
     *
     * @param activity act
     */
    public void pushActivity(Activity activity) {
        if (activityStack == null) {
            act
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ActivityManagerAndroid系统中非常重要的一个组件,负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们将深入了解ActivityManager框架的实现原理。 ## Activity的启动过程 在Android系统中,Activity是应用程序中最基本的界面单元。当用户点击应用程序的图标时,ActivityManager会负责启动应用程序并启动相应的Activity。下面是Activity的启动过程: 1. 应用程序进程启动:ActivityManager会创建一个新的进程来运行应用程序。 2. 应用程序的Application对象创建:在应用程序进程启动之后,ActivityManager会负责创建应用程序的Application对象。 3. Activity对象创建:当用户点击应用程序的图标并选择启动Activity时,ActivityManager会负责创建相应的Activity对象。 4. Activity的onCreate方法调用:ActivityManager会调用Activity对象的onCreate方法,完成Activity的初始化工作。 5. Activity的onStart方法调用:ActivityManager会调用Activity对象的onStart方法,将Activity显示给用户。 6. Activity的onResume方法调用:ActivityManager会调用Activity对象的onResume方法,让Activity成为用户交互的焦点。 7. Activity的生命周期结束:当用户退出Activity时,ActivityManager会负责销毁Activity对象。 ## 进程管理Android系统中,每个应用程序都运行在一个独立的进程中。ActivityManager负责管理所有进程,以确保系统的稳定和性能。 当应用程序被启动时,ActivityManager会为其创建一个新的进程并分配一定的内存资源。如果此时系统内存不足,ActivityManager会根据一定的策略来回收一些进程内存,以确保系统正常运行。 ActivityManager还负责监控进程的CPU使用情况和内存使用情况。如果一个进程的CPU使用率过高或者内存使用量过大,ActivityManager会考虑回收该进程的资源,以避免系统崩溃。 ## 任务管理Android系统中,任务是指一组相关的Activity。当用户启动一个应用程序时,ActivityManager会创建一个新的任务,并将应用程序的第一个Activity加入到该任务中。 当用户从一个Activity切换到另一个Activity时,ActivityManager会将前一个Activity加入到任务的后台,并将新的Activity显示给用户。当用户点击返回键时,ActivityManager会将当前Activity从任务中移除,并将前一个Activity重新显示给用户。 需要注意的是,当应用程序中的所有Activity都被销毁时,该应用程序的任务也会被销毁。这是因为Android系统中的Activity都是基于任务的,一个应用程序的所有Activity都属于同一个任务。 ## 总结 ActivityManagerAndroid系统中非常重要的一个组件,它负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们深入了解了ActivityManager的实现原理。熟悉ActivityManager的工作原理对于开发高质量的Android应用程序非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值