activity的最佳实践(代码片段)

z啵唧啵唧 z啵唧啵唧     2022-12-13     415

关键词:

文章目录

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")

制作容器镜像的最佳实践(代码片段)

...的关于镜像制作的相关文章总结出来的.包括通用的容器最佳实践,java,nginx,python容器最佳实践.最佳实践的目的一方面保证镜像是可复用的,提升DevOps效率,另一方面是为了提高安全性.希望对各位有所帮助.本文分为四部分内容,分别... 查看详情

Android:在 Activity 中声明 View 组件的最佳实践是啥? [关闭]

】Android:在Activity中声明View组件的最佳实践是啥?[关闭]【英文标题】:Android:WhatisbestpracticefordeclaringViewcomponentsinanActivity?[closed]Android:在Activity中声明View组件的最佳实践是什么?[关闭]【发布时间】:2015-11-1612:22:07【问题描述... 查看详情

markdown企业初创企业的最佳实践(代码片段)

查看详情

markdown用python开发的“最佳实践最佳”(bobp)指南。(代码片段)

查看详情

markdown用python开发的“最佳实践最佳”(bobp)指南。(代码片段)

查看详情

markdown用python开发的“最佳实践最佳”(bobp)指南。(代码片段)

查看详情

markdown用python开发的“最佳实践最佳”(bobp)指南。(代码片段)

查看详情

markdown用python开发的“最佳实践最佳”(bobp)指南。(代码片段)

查看详情

markdown用python开发的“最佳实践最佳”(bobp)指南。(代码片段)

查看详情

markdown用python开发的“最佳实践最佳”(bobp)指南。(代码片段)

查看详情

css实现div居中的最佳实践(代码片段)

查看详情

编码最佳实践——单一职责原则(代码片段)

SOLID是一组最佳编码实践的首字母缩写S单一职责原则O开放与封闭原则LLiskov(里式)替换原则I接口分离原则D依赖注入原则同时应用这些最佳实践,可以提升代码适应变更的能力。但是凡事要有度,过度使用虽然可以让代码有很... 查看详情

开源监控系统prometheus最佳实践(代码片段)

...heus构建天机阁2.0Metrics子系统的实践谈一谈Prometheus的一些最佳实践,最佳实践的理念是Prometheus系统简单稳定高效运行的关键。(注:天机阁2.0是新一代云原生可 查看详情

typescript开发环境的最佳实践(代码片段)

Typescript开发环境的最佳实践0??gitinit(略)1????初始化:$yarnadd-Dts-nodetypescript2??生成tsconfig.json:$yarntsc-init3??配置TSLint:$yarnaddtslint-D4??生成tslint.json:$yarntslint--init5??创建src/index.ts:$mkdirsrc&&e 查看详情

jmeter之最佳实践(代码片段)

...http://jmeter.apache.org/usermanual/best-practices.html 翻译:16.最佳实践16.1始终使用最新版本的JMeterJMeter的性能正在不断提高,因此强烈建议用户使用最新版本。确保始终阅读更改列表以了解新的改进和组件。一定要避免使用与最新版... 查看详情

redis最佳实践(代码片段)

...s是当前主流的缓存数据库实现,本文介绍Redis基本概念与最佳实践。架构与概念Redis是一个使用ANSIC编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。从2015年6月开始,Redis的开发由RedisLabs赞助,而2013年 查看详情

c++最佳实践|2.代码风格(代码片段)

...程、性能、正确性等角度全面介绍了现代C++项目的最佳实践。本文是该系列的第二篇。C++最佳实践:1.工具2.代码风格(本文)3. 安全性4. 可维护性5. 可移植性及多线程6. 性能7. 正确性 查看详情

c++最佳实践|2.代码风格(代码片段)

...程、性能、正确性等角度全面介绍了现代C++项目的最佳实践。本文是该系列的第二篇。C++最佳实践:1.工具2.代码风格(本文)3. 安全性4. 可维护性5. 可移植性及多线程6. 性能7. 正确性 查看详情