刚接触安卓开发,很多地方不太懂
在应用启动时往往需要进行初始化工作,如连接数据库等。这些代码应该放在哪里合适呢?
目前只能想到 3 个选择:
继承 Application 类,放在它的 onCreate() 方法里。缺点是如果初始化失败,程序需要退出,无法通过对话框显示错误信息(貌似显示对话框必须要 Activity Context )
专门做一个 Activity 作为 splash 界面,顺便运行初始化代码。缺点是应用被回收再复原时可能出问题
放在入口 Activity 的 onCreate 方法中。(这样做有什么缺点?)
在 stackoverflow 等地搜了半天,没看到几个相关问题,也几乎没有讨论
希望大佬赐教,谢谢!
1
limuyan44 2021-05-06 20:59:22 +08:00
下几个主流的 app 就知道了,很多都没加固过。
|
2
janus77 2021-05-06 21:05:47 +08:00
都可以,图方便就第一种
|
3
Jirajine 2021-05-06 21:08:02 +08:00 via Android
main activity 的 onCreate 就可以了,当然复杂点的应用 main activity 就是一个 splash 界面。
|
4
CEBBCAT 2021-05-06 21:51:25 +08:00 via Android
Java 不记得多少知识了,想问一下测试的时候 onCreate 会不会被调用?如果是的话好像不怎么便于单元测试
|
5
Nuttertoo1s 2021-05-06 22:17:07 +08:00
jetpack 有个组件专门用来管理初始化,Application 类讲道理是不会初始化失败的,很多第三方 SDk 都是要求在 Application 里进行初始化
|
6
ikas 2021-05-07 09:51:52 +08:00
没必要搞个 splash,放到 Application 就是最简单的,可以搞定所有组件的初始化依赖.缺点是,不管启动什么组件都需要执行初始化,不过你可以进行判断,只初始化需要的.
|
7
kingiis 2021-05-07 13:28:16 +08:00
分级咯
全局实例级别的扔 application 里 从 splash 去初始化 1.确认你获得了用户授权 就那个 隐私协议 用户协议之类的 2.才能申请各种权限 3.开始初始化各种全局实例 就这个流程就行了 |
8
HMSQQbA OP 感谢各位回复,最开始我尝试将初始化代码放到 Application 里,但是我忘记了当用户退出所有 Activity 时 Application 对象不会销毁,导致一些与预期不符的现象。(下次启动时 Application 对象被重用)看来这方面的设计还要考虑一下。
|