把从服务器接受的User类放到Application下,在某个Activity中就get不到了,是不是User信息不适合放在Application下?应该怎么存?
定义了一个public class App extends Application,在配置文件中设置好的初始化,里面放了一个UserBean的getter和setter方法,在‘A’-Activity中,用App.getUser().getxx没问题,跳转到'B'-Activity中,App.getUser()就出现了空指针。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
Android对
Applicaton
类做了如下描述:也就是说,我们可以继承该类以保存全局的“application state”。因为这些变量是全局的,所以应用的所有组件都可以获取/更改这些变量。链接
所以理论上,保存的全局变量在整个App的生命周期内是不会丢掉的,除非被程序主动改掉。
建议在整个工程中检查都是谁在引用Application子类中存储的这个全局变量,除了A-Activity和B-Activity之外? 或者你继承的Application类中,有没有在后来改到它?
如果还未解决,尝试使用单例模式,代替继承Application类以保存你的全局变量。
1,用接口定义全局变量
引用
UserInfo.USER_NAME
2,用公开静态变量
引用
UserInfo.USER_NAME
3, 用Getter/Setter
使用
UserBean.setUserName
/UserBean.getUserName
这个早就说过,不要在Application中放置全局对象. 当你把程序放置到后台,或者机器内存不够的时候,这些全局变量会被回收. 在Android中全局变量都要放置到数据库中或者Preferences中