学习
实践
活动
工具
TVP
写文章

Activity堆栈管理

默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个activity压入第一个 activity所在的task栈。 当用户按下返回键时,第二个activity从栈中弹出,第一个activity又在当前屏幕显示。 打个比方,当前的task包含4个activity–当前 activity下面有3个activity。 当用户再次按下返回键时,屏幕不会显示之前留下的那个activity(之前的task的根activity),而显示当前 activity从task栈中移出后栈顶的那个activity。 4种分类来区分,以下假设位于task1中的activity1启动activity2: 模式/分类 包容activity2的task 一个activity是否允许有多个实例 activity是否允许有其它

622100

ActivityManager 管理Activity

String packageName = context.getPackageName(); return packageName; } 自定义ActivityManager管理 /** * 用于管理Activity,获取Activity * 在结束一个activity后应该判断当前栈是否为空,为空则将本类引用置为null,以便于虚拟机回收内存 * 单例,调用 {@link #getActivityManager 到栈顶. * * @param activity 添加的activity */ public void pushActivity(Activity activity) { if (mActivityStack /移除所有的Activity public void removeAll(){ for (Activity activity : mActivityStack) { if (activity ! = null) { activity.finish(); activityStack.remove(activity); activity = null; } } } // 退出所有activity public

8120
  • 广告
    关闭

    2022腾讯全球数字生态大会

    11月30-12月1日,邀您一起“数实创新,产业共进”!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    android的activity管理

    在进行BlackBerry程序开发的时候,BlackBerry提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使用UiApplication.getUiApplication 对此我们可以设计一个全局的Activity栈,使用这个栈来管理Activity管理Activity的类的定义如下: import java.util.Stack;      import android.app.Activity;      public class ScreenManager  void popActivity(Activity activity){              if(activity! (Activity activity){              if(activityStack==null){      activityStack=new Stack<Activity>();

    1K50

    安卓activity管理

    activity) { activityList.add(activity); } public static void removeActivity(Activity activity) { activityList.remove(activity); } public static Activity getActivity() { > cls) { Activity activity = getActivity(cls); if (activity == null) { return ; } killActivity(activity); } public static Activity getActivity(Class<? (object instanceof Activity)) { return joinPoint.proceed(); } Activity activity

    7710

    ActivityManager_activity管理

    ActivityManager的作用 参照SDK的说明,可见ActivityManager的功能是与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等 Activity启动 在经过前文的学习以后,我们一起来整理一下Activity的启动机制。就从Activity的startActivity()函数开始吧。 这个类的功能是辅助Activity的监控和测试,在此我们不详细描述,我们来看它的execStartActivity()函数。 public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity 通过这样的源码追踪,我们了解到了Activity启动的底层实现机制,也加深了对Proxy模式和Binder机制的理解。从而为学习其他框架打下了基础。

    9120

    activity的启动模式和栈管理

    文章结构: 1.什么是栈 2.Activity栈 3.Task 4.Activity启动模式 5.Activity栈和Task联系 6.Intent Flags  7.Activity相关属性taskAffinity Android的管理主要是通过Activity栈来进行,当一个Activity启动时,系统会根据其配置将它压入到一个特定的栈中,系统处于运行状态。 当用户点击返回或则FINISH()了该Activity,那么它便会被从栈中压出,随之摧毁,按照Activity的生命周期可以知道,如果当前显示的栈中Activity没有被摧毁,那么打开新的Activity 5.Activity栈和Task联系 Task简单的就是一组以栈的模式聚集在一起的Activity组件集合,类似于一个填充了Activity的容器,最先加入的Activity会处于容器最下面,最后加入的处于容器最上面 FLAG_ACTIVITY_CLEAR_TOP 这个FLAG就相当于启动模式中的SingleTask,这种FLAG启动的Activity会把要启动的Activity之上的Activity全部弹出栈空间。

    75090

    android进程 清理及activity管理

    MainActivity如下: package come.on;   import android.app.Activity;   import android.content.Context;   **  * Demo描述:  * 内存清理及内存工具类  * 具体代码参见工具类MemoryUtils  *   */ public class MainActivity extends Activity M");           ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE ActivityManager activityManager = (ActivityManager) (context.getSystemService(android.content.Context.ACTIVITY_SERVICE topActivityName = temp[temp.length - 1];           }   return topActivityName;       }   //获取栈顶Activity

    695100

    Activity统一堆栈管理

    Activity需要反复调用,不能每一次都取create),那么当你点击返回键的时候,并不能实现直接退出,这种时候,就需要我们对Activity做一个统一的管理。 原理是,写一个BaseActivity继承自Activity,然后在Oncreate方法里,把当前的Activity加到我们Activity管理容器里,然后在需要的时候,遍历这个容器,把所有Activity 直接上代码: Activity管理类:AppManager /** * @author:程龙 date; On 2018/8/9 */ public class AppManager { private static Stack<Activity> activityStack = new Stack<Activity>(); /** * 添加Activity到堆栈 */ public static void addActivity(Activity activity) { activityStack.push(activity);

    13010

    Android解析ActivityManagerService(二)ActivityTask和Activity管理

    这一篇我们接着来学习与AMS相关的ActivityTask和Activity管理。 1.ActivityStack ActivityStack从名称来看是跟栈相关的类,其实它是一个管理类,用来管理系统所有Activity的各种状态。 2.Activity管理 我们知道Activity是由任务栈来进行管理的,不过任务栈是一个假想的模型,并不真实的存在。 栈管理就是建立在这个假想模型之上的,有了栈管理,我们可以对应用程序进行操作,应用可以复用自身应用中以及其他应用的Activity,节省了资源。 除了这三个FLAG,还有一些FLAG对我们分析栈管理有些帮助。 FLAG_ACTIVITY_NO_HISTORY:Activity一旦退出,就不会存在于栈中。

    1.1K90

    activity详解_activity教程

    context){ String packageName = context.getPackageName(); return packageName; } 自定义ActivityManager管理 /** * 用于管理Activity,获取Activity * 在结束一个activity后应该判断当前栈是否为空,为空则将本类引用置为null,以便于虚拟机回收内存 * 单例,调用 {@link #getActivityManager 到栈顶. * * @param activity 添加的activity */ public void pushActivity(Activity activity) { if (mActivityStack extends BaseActivity> klass) { for (Activity activity : mActivityStack) { if (activity ! /移除所有的Activity public void removeAll(){ for (Activity activity : mActivityStack) { if (activity !

    7820

    Activity 生命周期及其栈管理方式

    Activity 生命周期及其栈管理方式 Android 系统用栈的形式管理 Activity , 当新的 Activity 被创建是, 会被放置到栈顶, 这个 Activity 会进入到运行状态, 而前一个 Activity 则会被压入栈, 直到新的 Activity 退出, 否则不会出现在前台。 单个 Activity 的生命周期状态以及生命周期方法 根据 Android 文档, 每一个 Activity 都有四个状态, 它们分别是: 当 Activity 位于屏幕的最前面(栈顶),称之为 运行 ; 当 Activity 完全不可见时, 称之为 停止状态 , 这时 Activity 依然保持其状态以及成员信息, 不过由于此时 Activity 对用户不可见, 当系统其它地方需要内存时, 经常会被结束 多个 Activity 的栈管理方式 多个 Activity 之间采用的是栈道管理方式, 当用户启动新的 Activity 时, 新启动的 Activity 位于栈顶,当用户按后退按钮时, 栈顶的 Activity

    55320

    Activity

    Activity 什么是Activity 创建Activity 启动Activity 保存Activity状态 Activity的生命周期 ---- acitivyt 是什么 引用官方的说法: 是一个应用组件 窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上 创建Activity 要创建Activity 必须继承自Activity或者Activity的子类。 Activity调用的第一个方法 , 创建完成后必须在Manifest文件中 声明此Activity 系统才会知道有这个Activity <manifest ... > <application . 的状态 当用户 离开Activity去往另一个Activity时;Activity会被压入返回栈,如果内存不够就会被销毁 ,当Activity被销毁后其中的数据当然就没了,如果需要保留这些数据可调用 方法 当前activity1跳往到activity2 ,activity就会把activity1覆盖,这时就调用了此方法 onRestart(); 重新启动 onDestroy():activity再结束前调用的最后一个方法

    26560

    activity

    文章目录 一、activity的生命周期 1、activity的四种状态 2、activity的生命周期 3、activity的进程优先级 二、android的任务栈 三、activity的启动模式 四 、scheme跳转协议 一、activity的生命周期 1、activity的四种状态 running:可以交互 paused:可以看见但不可以交互,成员变量都还在,但是若内存紧张,将会优先被系统回收 stopped:完全被其他的activity覆盖看不见,成员变量都还在,但是若内存紧张,将会优先被系统回收 killed:被系统回收了,所保留的信息和成员变量已经不存在了 2、activity的生命周期 重新启动才调,由不可见状态变为可见状态的时候会调用 onDestory(): 做一些资源释放 3、activity的进程优先级 前台:可交互的activity 或者 在前台activity绑定的service ):创建的activity是在栈内的话,就会复用并将栈内其上的activity移除,并回调一个newIntent(); 4、singleInstence:在整个系统在只有这一个activity,并且独享任务栈

    12230

    activity跳转activity不销毁

    最近在做菜单,有三个界面分别用activity来显示,如 Activity A -> Activity B -> Activity C,返回键Activity C -> Activity B -> Activity A,当从A进入到B时按返回键无法退到A,是因为在A进入B时用了finish()方法,把A给销毁了,如下: finish(); Intent aToB = new Intent

    8830

    Android  Activity生命周期和堆栈管理的详解

    Activity的生命周期 Activity是Android中的四大组件之一,也是最基本,最重要的组件,是android系统提供一个可视化的,能与用户交换的组件。 ---onDestroy 这是一个完整的生命周期 场景二 A Activity 跳转到 到 B Activity (BActivity是完全覆盖AActivity) AOnCretate----- Activity(B Activity 是一个 对话框形式的Activity 或者 BActivty是一个透明的) AOnCretate-----AOnStart----AOnResume ------ 3 活动的 onResume——onPause Activity的堆栈管理模式 数据结构 队列:先进先出 栈:先进后出 每打开一个Activity,将会入栈,退出一个,将会出栈,采用栈的先进后出结构 ,再打开A时,将栈顶其他Activity全部出栈。

    56041

    ActivityActivity的启动模式:SingleTask

    Activity栈 2.3 SecondActivity中启动MainActivity 2.3.1 生命周期 2.3.2 Activity栈 2.4 MainActivity中启动SecondActivity 2.4.1 生命周期 2.4.2 Activity栈 3. Demo中包含两个ActivityActivity的LaunchMode: MainActivity-Standard SecondActivity- SingleTask 步骤: 启动MainActivity activities“,dump Activity栈的信息。 Activity实例上面的Activit全部结束掉,最终这个Activity实例会位于任务的堆栈顶端。

    7520

    Activity中启动和关闭其他Activity

    上一期我们学习了Activity的创建和配置,当时留了一个悬念,如何才能在默认启动的Activity中打开其他新建的Activity呢?那么本期一起来学习如何启动和关闭Activity。 一、概述 经过前面内容的学习,知道一个Android应用通常都会包含多个Activity,但只有一个Activity 会作为程序的入口——当该Android应用运行时将会自动启动并执行该Activity 至于应用中的其他Activity,通常都由入口 Activity启动,或由入口 Activity启动的Activity启动。 Activity启动其他Activity有如下两个方法。 仍然使用上期创建的ActivitySample工程,为了便于代码管理,这里新建一个activitystartupshutdown的Module。 其中第一个Activity的界面布局非常简单,只包含一个按钮和文本提示,其中按钮的作用主要是启动第二个Activity

    2.3K50

    Android开发之Activity管理工具类完整示例

    本文实例讲述了Android开发之Activity管理工具类。 分享给大家供大家参考,具体如下: 这个工具类是对Activity的一些管理,非常适用 package com.maobang.imsdk.util; import java.util.Stack; import 管理类 * Created by Administrator on 2016/11/24. */ public class ActivityPageManager { private static Stack () { Activity activity = activityStack.lastElement(); return activity; } /** * finish current activity (activity); } /** * finish the Activity */ public void finishActivity(Activity activity) { if (activity

    32930

    Android 插件化原理解析——Activity生命周期管理

    Activity,Service等组件是有生命周期的,它们统一由系统服务AMS管理;使用ClassLoader可以从插件中创建Activity对象,但是,一个没有生命周期的Activity对象有什么用? AMS进程进行通信: App进程会委托AMS进程完成Activity生命周期的管理以及任务栈的管理;这个通信过程AMS是Server端,App进程通过持有AMS的client代理ActivityManagerNative 完成通信过程; AMS进程完成生命周期管理以及任务栈管理后,会把控制权交给App进程,让App进程完成Activity类对象的创建,以及生命周期回调;这个通信过程也是通过Binder完成的,App所在server 其实AMS正如名字所说,管理所有的“活动”,整个系统的Activity堆栈,Activity生命周期回调都是由AMS所在的系统进程system_server帮开发者完成的;Android的Framework 解决了『启动没有在AndroidManifest.xml中显式声明的,并且存在于外部文件中的Activity』的问题,插件系统对于Activity管理才算得上是一个完全体。

    49310

    Android项目实战(三十七):Activity管理及BaseActivity的实现

    一、写一个Activity管理类 1、单例模式,以栈(先进后出)的形式存储Activity对象 public class AppManager { private static Stack<Activity { instance = new AppManager(); } return instance; } } 2、给AppManager管理类添加几个常用方法 } } 完整代码: /* * @author xqx * @emil djlxqx@163.com * create at 2017/6/12 * description: 管理管理 */ public class BaseActivity extends Activity{ /** * activity堆栈管理 */ protected appManager.finishActivity(this); } } 之后就可以基础这两个基础类了,实现对Activity管理,以及一些别的操作。

    85260

    扫码关注腾讯云开发者

    领取腾讯云代金券