Android高阶技巧

全局获取Context技巧

我们在编写代码的时候需要获取全局的Context,有时候会非常不太方便。例如我们写一个弹出Toast的工具类,
image
上面这个方法是讲Context作为参数传递进来,调用以上方法,这样会让调用放,将context委托给,showToast调用方
这样的话我们自己创建一个MyApplication,
image
接下来,我们要告知系统,当程序启动的时候需要初始化MyApplication类,我们在AndroidMainfest.xml文件中设置
image
现在的话,我们想在哪里调用Context,只需要调用MyApplication.context就可以了
我们接下来对Toast方法优化,
image
我们这样就可以使用全局的COntext了。

使用Intent传递对象

在我们之前使用Intent传递对象的时候,只能使用Intent传递一个固定的数据,当我们传递自定义对象的时候需要使用到以下两种方式进行传递了。

Serizlizable方式:

Serizable是序列化的意思,表示将一个对象转化成可存储或可传输的状态。序列化后的对象可以在网络上传输。也可以存储到本地。
序列化的案例: 实现了Serializable接口。
image

当我们传递数据的时候这样写:
image
我们取出数据的时候,调用了Intent.getSerializableExtra()方法来获取通过参数传递过来的序列化对象,接着再将它向下转型成Person对象。
val person = intent.getSerializableExtra("person_data") as Person
注意:这种传递对象的工作原理是,先将一个对象序列化成可存储或可传输的状态,传递给另外一个Activity后再将其反序列化成一个新的对象。这两个对象数据一致,但是两个不同的对象。

Parcelable方式

Parcelable是将一个完整的对象内部进行分解。分解后的每一部分都是Intent所支持的数据类型。这样就能实现传递对象的功能了。
image

最后我们通过下面的方法调用:
val person = intent.getParcelableArrayExtra("person_data") as Person
最终就会实现,
还有一种实现方式,但是前提就是需要将传递过来的数据封装在对象的主构造函数中才行。
例如下面代码
image

定制自己的日志工具

我们在打印日志的时候,会遇到一些问题。我们想让我们在程序开发阶段的时候,打印日志。在程序运行的时候打打印日志。这就需要我们自己编写一个只能的工具类了
image
我们只需要通过修改level的值,就可以自由地控制日志的打印行为。比如让level等于VERBOSR就可以打印所有的日志。让level等于Error就可以只打印程序的错误日志

posted @   IT小五  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示