当前位置: 首页 > article >正文

Android Activity 启动模式

Standard 启动模式

页面跳转顺序

MainActivity -> StandardActivity -> StandardActivity -> StandardActivity

页面栈 示例图 

任务栈中只存在MainActivity时

 

任务栈中存在MainActivity、StandardActivity

  

MainActivity -> StandardActivity 

 MainActivity -> StandardActivity -> StandardActivity 

MainActivity -> StandardActivity -> StandardActivity -> StandardActivity

通过ActivityManager查看页面栈

通过以下函数获取任务栈ID 、栈中Activity数量栈底Activity、栈顶Activity、栈中所有Activity

import android.app.Activity
import android.app.ActivityManager
import android.content.Context
import android.util.Log
import java.util.LinkedList


class Util {
    companion object {
        private val tag = Util::class.simpleName

        val inactiveActivities = LinkedList<Activity>()

        @JvmStatic
        fun getAllActivity(context: Context) {
            val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager?
            val taskList = activityManager!!.getRunningTasks(1) // todo 获取最近运行的1个任务
            for (taskInfo in taskList) {
                // todo 获取栈顶Activity
                val topComponentName = taskInfo.topActivity
                // todo 获取栈底Activity
                val baseComponentName = taskInfo.baseActivity
                // todo 获取栈中Activity 数量
                val numActivity = taskInfo.numActivities
                // todo 获取任务ID
                val taskId = taskInfo.taskId

                Log.i(tag, "$tag 当前任务栈...... 任务ID\t$taskId")
                Log.i(tag, "$tag 当前任务栈...... 栈中Activity数量\t$numActivity")
                if (baseComponentName != null) {
                    Log.i(tag, "$tag 当前任务栈...... 栈底Activity:\t${baseComponentName.className}")
                }
                if (topComponentName != null) {
                    Log.i(tag, "$tag 当前任务栈...... 栈顶Activity:\t${topComponentName.className}")
                }
                // todo 栈中所有Activity名称
                val activities= getInactiveActivities()
                Log.i(tag, "$tag 当前任务栈...... 所有Activity:\t$activities")
                Log.i(tag, "$tag 当前任务栈.....................................................")
            }
        }
        
        // todo 获取栈中所有Activity
        @JvmStatic
        fun getInactiveActivities(): List<Activity> {
            return inactiveActivities.toList()
        }

    }
}

注册监听所有Activity的事件

Application.ActivityLifecycleCallbacksApplication中的一个接口,调用registerActivityLifecycleCallbacks方法即可完成注册。用于全局监听每个Activity的生命周期、判断app前后状态等作用。

import android.app.Activity
import android.app.Application
import android.os.Bundle
import com.start.util.Util

class MyApplication : Application() {

    override fun onCreate() {
        super.onCreate()
        registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
            override fun onActivityResumed(activity: Activity) {

            }

            override fun onActivityPaused(activity: Activity) {}

            override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
                // todo 当Activity创建时,添加到列表中
                if (!Util.inactiveActivities.contains(activity)) {
                    Util.inactiveActivities.add(activity)
                }
                Util.getAllActivity(baseContext)
            }
            override fun onActivityStarted(activity: Activity) {}
            override fun o

http://www.kler.cn/news/366832.html

相关文章:

  • 基于neo4j的学术论文关系管理系统
  • linux中的PATH环境变量
  • Linux中级(DNS域名解析服务器)
  • RV1126音视频学习(二)-----VI模块
  • redis集群配置
  • 【AIGC】优化长提示词Prompt:提升ChatGPT输出内容的准确性与实用性
  • 24年追觅科技入职北森测评笔试:商业推理40分钟28题真题汇总、网盘资料、资源下载
  • 【JavaSE】认识String类,了解,进阶到熟练掌握
  • 【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程
  • 音频重采样(libresample)
  • word下宏命令添加右键菜单调用大语言模型
  • Unity3D 开发技巧
  • Linux之web服务器
  • 大数据-191 Elasticsearch - ES 集群模式 配置启动 规划调优
  • 【华为\荣耀、中兴、华三路由器IPV6设置】
  • 【AIGC】ChatGPT应用之道:如何打破`专家`幻象,提升AI协作质量
  • Mybatis-08.基础操作-删除
  • 宠物电商新篇章:SpringBoot驱动的在线交易网站
  • 厨艺交流新天地:基于Spring Boot的解决方案
  • Qt Essential Classes
  • Java基础题:搬砖
  • Spring Boot环境下的厨艺社区构建
  • shell 基础
  • C#实现将汉字转换成拼音
  • [Gdiplus/Gdi]_[中级]_[实现多行文本的多种颜色绘制-富文本绘制]
  • 如何通过sip信令以及抓包文件分析媒体发到哪个地方