Android Activity状态与操作探究

目录
  • 知晓当前是在哪一个Activiy
  • 随时随地退出程序
  • 启动Activity的最佳写法

知晓当前是在哪一个Activiy

创建一个BaseActivity类,继承AppCompatActivity类.重写onCreate方法

open class BaseActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //Kotlin当中的javaClass表示获取当前实例的Class对象,相当于在java当中调用getClass()方法
        //而Kotlin当中的BaseActivity::class.java表示获取BaseActivity类的Class对象,相当于java当中的BaseActivity.class
        //javaClass.simpleName 表示获取当前实例的对象然后调用simpleName获取当前实例的类名
        Log.d("BaseActivity", javaClass.simpleName)
    }
}

修改FirstActivity等的代码,让他们不再继承AppCompatActivity而是继承自BaseAvtivity

记住要想让自己能够被别人所继承,要在class前面加上open关键字

运行项目代码依次点击按钮进入相应的Activity,观察日志输出,现在我们每当进入一个Activity的界面,该Activity的类名就会被打印出来了,这样我们就能够知道当前的界面是哪一个Activity了

随时随地退出程序

创建一个单例类,用来管理所有的activity

package com.zb.activitytest.util
import android.app.Activity
/**
 * 单例类,专门用来管理所有的Activity
 */
object ActivityCollector {
    //创建一个ArrayList集合,用来存放所有的Activity
    private val activities = ArrayList<Activity>()
    //往集合当中添加Activity的方法
    fun addActivity(activity: Activity) {
        activities.add(activity)
    }
    //删除集合当中的Activity的方法
    fun removeActivity(activity: Activity) {
        activities.remove(activity)
    }
    //销毁所有的Activity的方法
    fun finishAll() {
        //遍历集合
        for (activity in activities) {
            //判断当前activity是否是正在销毁的状态
            if (!activity.isFinishing) {
                //如果不是正在销毁的阶段,那么我们就调用activity的finish方法,将其进行销毁
                activity.finish()
            }
        }
        activities.clear()
    }
}

修改BaseActivity中的代码

open class BaseActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //Kotlin当中的javaClass表示获取当前实例的Class对象,相当于在java当中调用getClass()方法
        //而Kotlin当中的BaseActivity::class.java表示获取BaseActivity类的Class对象,相当于java当中的BaseActivity.class
        //javaClass.simpleName 表示获取当前实例的对象然后调用simpleName获取当前实例的类名
        Log.d("BaseActivity", javaClass.simpleName)
        //当回调onCreate()方法的时候,应该往集合当中添加当前activity的实例
        ActivityCollector.addActivity(this)
    }
    override fun onDestroy() {
        super.onDestroy()
        //当回调onDestroy()方法的时候,应该删除集合当中的activity实例
        ActivityCollector.removeActivity(this)
    }
}

以后不论在程序的哪个位置,想要直接退出程序的话,只需要调用ActivityCollector.finishAll()方法即可

当然还可以在销毁Activity的代码后面加上杀掉当前进程的代码,以保证程序可以完全的退出

//杀死当前进程
android.os.Process.killProcess(android.os.Process.myPid())

启动Activity的最佳写法

在自己的Activity中定义一个actionStart()方法,在里面包装自己需要的参数

例如SecondActivity中写一个actionStart()方法

    /**
     * activity的最佳启动方式,方便告知别的activity(想要启动本activity)在启动activity时需要传递的数据是什么
     */
    companion object {
        fun actionStart(context: Context, data1: String, data2: String) {
            val intent = Intent(context, SecondActivity::class.java)
            intent.putExtra("data1", data1)
            intent.putExtra("data2", data2)
            context.startActivity(intent)
        }
    }

FirstActivity在跳转到SecondActivity的时候就知道自己要给对方传递什么数据了,而且这种方式启动activity只需要一行代码即可

SecondActivity.actionStart(this, "1111", "2222")

到此这篇关于Android Activity状态与操作探究的文章就介绍到这了,更多相关Android Activity内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android开发Activity的生命周期详解

    目录 前言 典型情况下的生命周期分析 前言 Android生命周期分为两部分: (1)典型情况下的生命周期. (2)异常情况下的生命周期. 典型情况下的生命周期分析 图1 Activity的生命周期图解 图2 Activity生命周期的金字塔图 (1)典型情况下的生命周期指在有用户参与的情况下,Activity所经过的生命周期的改变,正常情况下,Activity的常用生命周期有以下几种情况: onCreate():Activity启动后第一个被调用的函数,常用来进行Activity的初始化,如创

  • Android Activity启动流程刨析

    目录 前言 一.Binder的基本理解 二.Activity启动的双向IPC过程 三.AMS服务注册 前言 上篇文章写到 Service 的启动过程: 相对来说Activity的启动过程比Service的启动过程更为复杂,其一Activity的生命周期方法比Service多,其二Activity具有启动模式和返回栈: 写本文的目的在于更清晰的梳理Activity的启动过程,加强自己的内功修炼,力在以最简单的方式让大家理解,跟大家一起学习 一.Binder的基本理解 Activity的启动有多次I

  • Android Activity共享元素动画示例解析

    目录 正文 TransitionManager介绍 Scene(场景) 生成场景 Transition(过渡) OverlayView和ViewGroupOverlay GhostView Activity的共享元素源码分析 我们先以ActivityA打开ActivityB为例 ActivityB返回ActivityA SharedElementCallback回调总结 正文 所谓Activity共享元素动画,就是从ActivityA跳转到ActivityB 通过控制某些元素(View)从Act

  • Android Activity View加载与绘制流程深入刨析源码

    1.App的启动流程,从startActivity到Activity被创建. 这个流程主要是ActivityThread和ActivityManagerService之间通过binder进行通信来完成. ActivityThread可以拿到AMS 的BinderProxy.AMS可以拿到ActivityThread的BinderProxy ApplicationThread.这样双方就可以互相通讯了. 当ApplicationThread 接收到AMS的Binder调用后,会通过handler机

  • Android10 App启动Activity源码分析

    目录 正文 ActivityThread的main方法 Application Context对象 LaunchActivityItem ClientLifecycleManager ClientTransaction TransactionExecutor executeLifecycleState方法 正文 上一篇: Android 10 App启动分析之进程创建篇(一) 上一篇文章,我们探讨了App启动过程中进程创建及初始化的流程,这篇文章我们接着上篇的内容,继续探讨App的Applica

  • Android Activity状态与操作探究

    目录 知晓当前是在哪一个Activiy 随时随地退出程序 启动Activity的最佳写法 知晓当前是在哪一个Activiy 创建一个BaseActivity类,继承AppCompatActivity类.重写onCreate方法 open class BaseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)

  • Android Activity回收与操作超时处理

    本文实例为大家分享了Android Activity回收与操作超时的处理,供大家参考,具体内容如下 1.Activity的回收 针对多个activity退出的处理 关键代码: 1).新建活动管理类: public class ActivityCollector { private static List<Activity> activityList = new ArrayList<Activity>(); public static void addActivity(Activit

  • Android保存Activity状态的方法

    本文实例讲述了Android保存Activity状态的方法.分享给大家供大家参考,具体如下: 如果你想保存Activity的信息(例如,类实例的变量)而又不需要和其它的组件共享的话,你可以调用Activity的getPreferences方法,不用指定一个Preference的名字.对返回的Shared  Preference的访问只限于调用的Activity:每个Activity支持一个不命名的Shared Preference对象. 下面的框架代码显示了如何使用Activity的私有Shar

  • android初学者必须掌握的Activity状态的四大知识点(必读)

    这几天一直都在捣鼓android的知识点,兴趣班的老师,讲课太过深奥,天(想到什么就见什么,后后面完全不想听),最后自己找资料总结了在Android学习中很重要的一个组件Activity,那就开始吧! 第一:掌握Activity的四种状态及什么时候触发 首先我们要知道什么是Activity,简单来说Activity其实就是一个屏幕的显示页面.(简单的阐述) 我们知道Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之

  • Android Activity中onStart()和onResume()的区别分析

    本文分析了Android Activity中onStart()和onResume()的区别.分享给大家供大家参考,具体如下: 首先你要知道Activity的四种状态: ① Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态. ② Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态.此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它

  • Android 控制wifi 相关操作实例

    Android 控制WIFI相关操作 WIFI的全称是Wireless Fidelity,又称802.11b标准,是一种高速的无线通信协议,传输速度可以达到11Mb/s. 实际上,对WIFI并不需要过多的控制(当成功连接WIFI后,就可以直接通过IP在WIFI设备之间进行通信了),一般只需要控制打开或关闭WIFI以及获得一些与WIFI相关的信息(例如,MAC地址.IP等). 如果读者的Android手机有WIFI功能,可以在手机上测试本节的例子.要注意的是,WIFI功能不能在Android模拟器

  • 分析Android Activity的启动过程

    分析Android Activity的启动过程 对于Android Activity 的启动过程,我在Android源码中读了好久的源码,以下是我整理出来的Activity启动过程和大家分享下: Activity作为Android的四大组件之一,也是最基本的组件,负责与用户交互的所有功能.Activity的启动过程也并非一件神秘的事情,接下来就简单的从源码的角度分析一下Activity的启动过程. 根Activity一般就是指我们项目中的MainActivity,代表了一个android应用程序

  • Android中实现多线程操作的几种方式

    目录 前言 最基础的方式 继承Thread类并实现run()方法 匿名内部类 实现Runnable接口 callable+FutureTask 线程池 手动创建线程池 使用Executors创建线程池 Android中特有的实现多线程 使用HandlerThread 使用IntentService JobIntentService/JobScheduler WorkManager WorkManager 使用协程 AsyncTask 结语 前言 多线程一直是一个老大难的问题,首先因为它难以理解,

  • Android activity实现延时跳转功能

    什么是Activity Activity是一个Android的应用组件,它提供屏幕进行交互.每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上. 一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity.将Activity设为主活动的方法,如下面代码所示需要在AndroidManifest文件中添加以下内容 <application> .

  • Android Activity生命周期调用的理解

    目录 状态 启动模式 操作APP时生命周期调用 Activity异常生命周期 总结 状态 活动存放在一个叫返回栈的一个集合,当重新打开一个Activity时,它就会出现在栈顶.当要销毁该活动时,调用finish()或back,栈顶的活动就会出栈. 运行状态:一个活动处于栈顶时 暂停状态:不处于栈顶,但仍然可见.(失去焦点,非全屏或透明的activity放置在栈顶) 停止状态:不处于栈顶,也不可见,但还是会为它保留一些变量的相关数据.(被覆盖) 销毁状态:在栈中移除(killed状态) 启动模式

随机推荐