`

在Android项目中手动管理你的Activity

阅读更多
我们通常会使用系统自带的ActivityManager,但是在有些情况下使用起来不是太简洁。所以会自己来维护一个栈来管理这些activtiy

代码如下:

import java.util.Stack;

import android.app.Activity;
import android.util.Log;

public class ScreenManager
{
    private static final String TAG = "ScreenManager";
    private static Stack<Activity> activityStack;
    
    private static ScreenManager instance;
    
    /**
     * <单例方法>
     * <功能详细描述>
     * @return 该对象的实例
     * @see [类、类#方法、类#成员]
     */
    public static ScreenManager getScreenManager1()
    {
        if (instance == null)
        {
            instance = new ScreenManager();
        }
        return instance;
    }
    
    /**
     * <获取当前栈顶Activity>
     * <功能详细描述>
     * @return
     * @see [类、类#方法、类#成员]
     */
    public Activity currentActivity()
    {
        if (activityStack == null || activityStack.size() == 0)
        {
            return null;
        }
        Activity activity = activityStack.lastElement();
        
        Log.e(TAG, "get current activity:" + activity.getClass().getSimpleName());
        return activity;
    }
    
    /**
     * <将Activity入栈>
     * <功能详细描述>
     * @param activity
     * @see [类、类#方法、类#成员]
     */
    public void pushActivity(Activity activity)
    {
        if (activityStack == null)
        {
            activityStack = new Stack<Activity>();
        }
        Log.e(TAG, "push stack activity:" + activity.getClass().getSimpleName());
        activityStack.add(activity);
    }
    
    /**
     * <退出栈顶Activity>
     * <功能详细描述>
     * @param activity
     * @see [类、类#方法、类#成员]
     */
    public void popActivity(Activity activity)
    {
        if (activity != null)
        {
            activity.finish();
            Log.e(TAG, "remove current activity:" + activity.getClass().getSimpleName());
            activityStack.remove(activity);
            activity = null;
        }
    }
    
    /**
     * <退出栈中所有Activity,当前的activity除外>
     * <功能详细描述>
     * @param cls
     * @see [类、类#方法、类#成员]
     */
    public void popAllActivityExceptMain(Class cls)
    {
        while(true)
        {
            Activity activity = currentActivity();
            if (activity == null)
            {
                break;
            }
            if (activity.getClass().equals(cls))
            {
                break;
            }
            
            popActivity(activity);
        }
    }
}



具体使用:
 @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        
        super.onCreate(savedInstanceState);
        
        ActivityManager am =  (ActivityManager)getSystemService("");
        am.
        ScreenManager.getScreenManager().pushActivity(this);
    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        ScreenManager.getScreenManager().popActivity(this);
    }


    /**
     * <退出系统>
     * <绑定退出按钮>
     * @param v
     * @see [类、类#方法、类#成员]
     */
    public void exitSystem(View v)
    {
        ScreenManager.getScreenManager().popAllActivityExceptMain(getClass());
        
        finish();
    }
分享到:
评论

相关推荐

    androidStudio新建项目并添加activity

    通过以上步骤,你已经成功地在Android Studio中创建了一个新的项目,并添加了一个额外的Activity。这仅仅是Android开发的冰山一角,接下来你还可以学习更多的主题,如使用Fragment、处理用户输入、网络请求、数据库...

    Android利用Intent启动和关闭Activity

    但在大多数情况下,系统的Activity管理机制足以处理Activity的生命周期,无需手动调用`finish()`。 ```java // 关闭当前Activity finish(); ``` 此外,如果需要关闭之前启动的独立Activity,可以使用`finish...

    Android 一次启动多个Activity (TaskStackBuilder)

    在Android开发中,有时我们需要通过通知(Notification)来引导用户进入特定的功能或界面,而不仅仅是启动单个Activity。"Android一次启动多个Activity (TaskStackBuilder)"这个话题涉及到Android的Task和Back Stack...

    安卓安装卸载相关-Android中应用程序Activity管理类用于Activity管理和应用程序退出。.zip

    在Android操作系统中,Activity是应用程序的基本构建块,它代表了用户与应用交互的界面。Activity管理类对于理解和操控Android应用的生命周期至关重要。本资源包主要关注Android中的Activity管理和应用程序的退出...

    Android基础系列的Activity

    为了避免不必要的重建,可以通过在AndroidManifest.xml中指定Activity的android:configChanges属性,或重写onConfigurationChanged()方法来手动处理配置变化。 总结起来,Android的Activity是构建用户界面和实现...

    android Activity 详述 demo

    在Android应用开发中,Activity是核心组件之一,它代表了用户界面的一个屏幕或者一个交互窗口。这个"android Activity 详述 demo"旨在深入探讨Activity的工作原理及其在实际应用中的使用方式。通过链接给出的博客...

    全面解析Android应用开发中Activity类的用法

    使用`Intent.putExtra()`方法添加数据到Intent,然后在目标Activity中通过`Intent.getXXXExtra()`方法获取数据。数据可以是基本类型、Parcelable对象或者Serializable对象。 - **通过静态变量传递**:虽然这种方法...

    android生命周期管理:启动一个Activity

    当我们谈论“android生命周期管理:启动一个Activity”,我们关注的是如何启动Activity以及在生命周期中的关键回调函数。 1. 了解生命周期回调函数 Activity的生命周期由一系列的回调方法组成,包括onCreate(), ...

    Activity堆栈管理demo

    在"Activity堆栈管理demo"的源码分析中,开发者可能会详细讲解如何利用Android的IntentFlags和startActivityForResult()方法来控制Activity的启动模式和堆栈行为。此外,还可能介绍如何创建自定义的工具类,以便更...

    android android 控件跟随手动

    在Android开发过程中,我们常常需要实现一些自定义的交互效果,以增强用户体验或实现特定的功能需求。本篇文章将详细介绍如何通过代码实现一个简单的控件(例如按钮)能够根据用户的触摸操作进行移动的效果。 #### ...

    Android学习之路——5.Activity子类

    在Android应用开发中,Activity是Android四大组件之一,它是用户界面的主要载体,负责与用户进行交互。本篇文章将深入探讨Activity的子类化及其在实际开发中的应用。通过子类化Activity,我们可以更好地组织代码,...

    Android-通过Url来进行activity的跳转此方案应用很广。也可用于Hybrid混合编程中

    在Android开发中,Url路由是一种常见且强大的技术,它允许我们通过URL字符串来启动特定的Activity,实现应用程序内部或跨应用程序的导航。这种技术在构建复杂应用时特别有用,例如在处理网页与原生应用之间的交互,...

    android Service 与Activity绑定

    在Android应用开发中,Service和Activity是两个非常重要的组件,它们各自承担着不同的职责。Service主要负责在后台长时间运行的任务,而Activity则专注于用户界面的交互。本篇将深入探讨Service与Activity之间的绑定...

    android里activity切换动画集合

    在Activity中,如果使用Fragment进行切换,同样可以应用动画。通过`FragmentManager`的`beginTransaction()`方法的`setCustomAnimation()`,可以设置Fragment的进入和退出动画。 6. **跨进程动画(Cross Process ...

    android Activity生命周期

    在Android应用开发中,Activity是用户界面的基本单元,它负责展示屏幕上的内容并处理用户交互。Activity的生命周期是Android开发者必须深入理解的关键概念,因为它直接影响到应用的性能、内存管理和用户体验。本文将...

    Android-仿微信滑动销毁activity获取view绘制区域

    在Android应用开发中,微信的滑动销毁Activity功能是一个非常受欢迎的设计,它为用户提供了流畅且直观的交互体验。这个特性使得用户可以通过在屏幕边缘向上滑动来关闭当前的Activity,模仿了微信应用中的行为。要...

    基于Android的学生信息管理系统

    总的来说,这个系统难度不大,但是安卓的项目本来就少,这个项目耶包含了基本的增删改查,并且能实现后台与App的交互,所以这一个星期中还是学了很多东西的,如Android的Fagment、Activity、手动实现分页、HTTP请求...

    初学者学习android项目

    1. **不引入任何jar包的项目**:在早期的Android开发中,开发者可能需要手动添加第三方库的jar包来扩展功能,例如网络请求、数据库操作等。一个不引入jar包的项目意味着它可能完全依赖于Android SDK提供的原生API。...

    Android集成CocosCreator项目-demo

    2. **导出Android项目**:在CocosCreator中,选择“发布” -&gt; “Android”,然后按照提示导出项目。这将生成一个包含所有必要资源和配置文件的Android工程目录。 3. **打开Android Studio**:启动Android Studio,...

    android左右滑动切换activity

    在一个Activity中,可以有多个Fragment,用户可以通过滑动在这些Fragment之间切换。 3. **PageTransformer**:ViewPager提供了一个接口`PageTransformer`,允许开发者自定义页面滑动时的动画效果,例如深度效果、...

Global site tag (gtag.js) - Google Analytics