拒绝被打扰,安卓之如何优雅的写出启动Activity方法

简介: 工作中每个人都要负责自己的那一块任务,有时候我们前一个工作如果没处理好,后续他人如果接手就容易出现看不懂你写的东西而来询问你的情况。

情景再现

背景

工作中每个人都要负责自己的那一块任务,有时候我们前一个工作如果没处理好,后续他人如果接手就容易出现看不懂你写的东西而来询问你的情况。

就如启动Activity,由于这个Activity是别人负责写的,我就会感到很迷茫,因为我不知道需要传递哪些必要的参数进去才能正确启动该Activity。

正常情形

比如OtherActivity需要两个非常重要的参数,知道的情况下就很容易写出启动代码:

val intent = Intent(this, OtherActivity::class.java)
intent.putExtra("oneParam", "data1")
intent.putExtra("twoParam", "data2")
startActivity(intent)

通过Intent构建出当前“意图”(借助Intent传递两个必须的参数),然后调startActivity()或startActivityForResult()方法即可将Activity启动。

问题浮现

可是事情往往不会这样发展,这个要不是你自己开发的Activity,那你要么得仔细去阅读一遍该Activity代码,要么直接去询问那位写这个Activity的同事,你询问别人着实挺方便,但别人要问你,那可就麻烦了,因为你写过的可不会是一个两个Activity,大多数情况最后你自己都不太清楚了,如果你自己再去回顾一遍,很可能就会耽误你手上的工作了,所以我们如何去避免这种情况呢?下面就来谈谈怎么才能拒绝被打扰,让我们优雅的写出Activity启动方法吧。

解决方案

该问题的核心就是你写过的Activity别人无法快速知晓要传递多少参数?所以最佳写法当然是直接明确告诉他/她喽。如下,我们在自己负责的Activity中直接写上启动方法:

class OtherActivity : BaseActivity() {
    ...
    companion object {
        fun actionStart(context: Context, data1: String, data2: String) {
            val intent = Intent(context, OtherActivity::class.java)
            intent.putExtra("oneParam", data1)
            intent.putExtra("twoParam", data2)
            context.startActivity(intent)
        }
    }
}

其中companion object是Kotlin规定的只要定义在这里面的方法都可以使用类似于Java静态方法的形式调用,而我们在上述代码中写了actionStart()方法,里面是我们完整的调用OtherActivity方法,而这样写后,别人不需要阅读你的代码也不用问你,就可以知道,该Activity应该需要传递哪些参数如何正确启动,当然,调用方法是很简单的:

button1.setOnClickListener {
    OtherActivity.actionStart(this, "data1", "data2")
}

只需要调用方法这一句就可以轻松启动该Activity,再也不会因为这点小事而麻烦你了!

结语

尽管这是非常基础的,但因为很多人都不会想起来去做,所以麻烦就会越来越多,故精益求精实乃必要。

相关文章
|
15天前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
40 2
基于Android P,自定义Android开机动画的方法
|
15天前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
61 2
|
2月前
|
Android开发
Android面试题之Activity的启动模式和flag
Android Activity的四种启动模式:standard(默认,每次启动创建新实例),singleTop(栈顶复用,不走onCreate,调用onNewIntent),singleTask(栈内唯一,清除上方Activity)和singleInstance(单独栈内唯一)。启动模式在AndroidManifest.xml中配置,Intent Flags如FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP可实现类似功能。了解这些对于处理Activity栈管理至关重要。
37 0
|
15天前
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
25 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
15天前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
35 1
|
14天前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
119 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
30天前
|
开发工具 Android开发
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
29 1
|
2月前
|
XML Android开发 数据格式
Android 中如何设置activity的启动动画,让它像dialog一样从底部往上出来
在 Android 中实现 Activity 的对话框式过渡动画:从底部滑入与从顶部滑出。需定义两个 XML 动画文件 `activity_slide_in.xml` 和 `activity_slide_out.xml`,分别控制 Activity 的进入与退出动画。使用 `overridePendingTransition` 方法在启动 (`startActivity`) 或结束 (`finish`) Activity 时应用这些动画。为了使前 Activity 保持静止,可定义 `no_animation.xml` 并在启动新 Activity 时仅设置新 Activity 的进入动画。
50 12
|
21天前
|
Android开发
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
26 0
|
21天前
|
Java 测试技术 Android开发
Android项目架构设计问题之使用反射调用类的私有方法如何解决
Android项目架构设计问题之使用反射调用类的私有方法如何解决
13 0