我们通常会使用系统自带的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();
}
分享到:
相关推荐
通过以上步骤,你已经成功地在Android Studio中创建了一个新的项目,并添加了一个额外的Activity。这仅仅是Android开发的冰山一角,接下来你还可以学习更多的主题,如使用Fragment、处理用户输入、网络请求、数据库...
但在大多数情况下,系统的Activity管理机制足以处理Activity的生命周期,无需手动调用`finish()`。 ```java // 关闭当前Activity finish(); ``` 此外,如果需要关闭之前启动的独立Activity,可以使用`finish...
在Android开发中,有时我们需要通过通知(Notification)来引导用户进入特定的功能或界面,而不仅仅是启动单个Activity。"Android一次启动多个Activity (TaskStackBuilder)"这个话题涉及到Android的Task和Back Stack...
在Android操作系统中,Activity是应用程序的基本构建块,它代表了用户与应用交互的界面。Activity管理类对于理解和操控Android应用的生命周期至关重要。本资源包主要关注Android中的Activity管理和应用程序的退出...
为了避免不必要的重建,可以通过在AndroidManifest.xml中指定Activity的android:configChanges属性,或重写onConfigurationChanged()方法来手动处理配置变化。 总结起来,Android的Activity是构建用户界面和实现...
在Android应用开发中,Activity是核心组件之一,它代表了用户界面的一个屏幕或者一个交互窗口。这个"android Activity 详述 demo"旨在深入探讨Activity的工作原理及其在实际应用中的使用方式。通过链接给出的博客...
使用`Intent.putExtra()`方法添加数据到Intent,然后在目标Activity中通过`Intent.getXXXExtra()`方法获取数据。数据可以是基本类型、Parcelable对象或者Serializable对象。 - **通过静态变量传递**:虽然这种方法...
当我们谈论“android生命周期管理:启动一个Activity”,我们关注的是如何启动Activity以及在生命周期中的关键回调函数。 1. 了解生命周期回调函数 Activity的生命周期由一系列的回调方法组成,包括onCreate(), ...
在"Activity堆栈管理demo"的源码分析中,开发者可能会详细讲解如何利用Android的IntentFlags和startActivityForResult()方法来控制Activity的启动模式和堆栈行为。此外,还可能介绍如何创建自定义的工具类,以便更...
在Android开发过程中,我们常常需要实现一些自定义的交互效果,以增强用户体验或实现特定的功能需求。本篇文章将详细介绍如何通过代码实现一个简单的控件(例如按钮)能够根据用户的触摸操作进行移动的效果。 #### ...
在Android应用开发中,Activity是Android四大组件之一,它是用户界面的主要载体,负责与用户进行交互。本篇文章将深入探讨Activity的子类化及其在实际开发中的应用。通过子类化Activity,我们可以更好地组织代码,...
在Android开发中,Url路由是一种常见且强大的技术,它允许我们通过URL字符串来启动特定的Activity,实现应用程序内部或跨应用程序的导航。这种技术在构建复杂应用时特别有用,例如在处理网页与原生应用之间的交互,...
在Android应用开发中,Service和Activity是两个非常重要的组件,它们各自承担着不同的职责。Service主要负责在后台长时间运行的任务,而Activity则专注于用户界面的交互。本篇将深入探讨Service与Activity之间的绑定...
在Activity中,如果使用Fragment进行切换,同样可以应用动画。通过`FragmentManager`的`beginTransaction()`方法的`setCustomAnimation()`,可以设置Fragment的进入和退出动画。 6. **跨进程动画(Cross Process ...
在Android应用开发中,Activity是用户界面的基本单元,它负责展示屏幕上的内容并处理用户交互。Activity的生命周期是Android开发者必须深入理解的关键概念,因为它直接影响到应用的性能、内存管理和用户体验。本文将...
在Android应用开发中,微信的滑动销毁Activity功能是一个非常受欢迎的设计,它为用户提供了流畅且直观的交互体验。这个特性使得用户可以通过在屏幕边缘向上滑动来关闭当前的Activity,模仿了微信应用中的行为。要...
总的来说,这个系统难度不大,但是安卓的项目本来就少,这个项目耶包含了基本的增删改查,并且能实现后台与App的交互,所以这一个星期中还是学了很多东西的,如Android的Fagment、Activity、手动实现分页、HTTP请求...
1. **不引入任何jar包的项目**:在早期的Android开发中,开发者可能需要手动添加第三方库的jar包来扩展功能,例如网络请求、数据库操作等。一个不引入jar包的项目意味着它可能完全依赖于Android SDK提供的原生API。...
2. **导出Android项目**:在CocosCreator中,选择“发布” -> “Android”,然后按照提示导出项目。这将生成一个包含所有必要资源和配置文件的Android工程目录。 3. **打开Android Studio**:启动Android Studio,...
在一个Activity中,可以有多个Fragment,用户可以通过滑动在这些Fragment之间切换。 3. **PageTransformer**:ViewPager提供了一个接口`PageTransformer`,允许开发者自定义页面滑动时的动画效果,例如深度效果、...