Java 全局对象(基于“扩展应用程序”)一夜之间蒸发。。为什么?
我有一个android应用程序,在那里我扩展了应用程序对象Java 全局对象(基于“扩展应用程序”)一夜之间蒸发。。为什么?,java,android,json,garbage-collection,Java,Android,Json,Garbage Collection,我有一个android应用程序,在那里我扩展了应用程序对象 public class Globals extends Application { private Map<String, Object> Creators = new LinkedHashMap<>(); } public类Globals扩展应用程序{ 私有映射创建者=新建LinkedHashMap(); } Globals中有各种各样的东西。通常是事物的HashMaps——我将其用作全局j
public class Globals extends Application {
private Map<String, Object> Creators = new LinkedHashMap<>();
}
public类Globals扩展应用程序{
私有映射创建者=新建LinkedHashMap();
}
Globals
中有各种各样的东西。通常是事物的HashMaps——我将其用作全局json缓存,其中每个上下文都有一个实例。现在一夜之间,应用程序
对象有时可能是空的。i、 e.我使用该应用程序,然后去睡觉,早上回去测试,所有json缓存都是空的。但用户仍在“登录”。我认为这是因为操作系统上的垃圾收集
现在。我可以只刷新json缓存
,或者在json缓存
为空时强制“注销”,但有一个问题-它可能为空,因为服务器没有合法的json。i、 “空着”不是去买更多的理由。我需要做的是检测安卓何时将缓存夷为平地,或者至少知道安卓保留应用程序
扩展的最短时间
它会将所有内容设置为null
有人有什么想法吗?请记住,上下文将在onCreate
中的上下文中重新初始化应用程序的null HashMap成员(由于超出范围的原因,这是必需的),因为我声明了新的,但简单地测试“null”并不是一个真正的选项。我想只在json-gather
上更改空null是可以的,但我需要知道这会起作用,否则我会浪费一天的时间(即很难测试)
现在一夜之间,应用程序对象有时可能是空的。i、 e.我使用该应用程序,然后去睡觉,早上回去测试,所有json缓存都是空的
您的进程很可能已终止。见和
我需要做的是检测安卓何时将缓存夷为平地
流程终止时不会通知您
或者至少知道Android保留应用程序扩展的最短时间
您的进程可以在离开前台几毫秒后终止
[应用程序
可以作为数据存储
仅适用于可以轻松从持久数据存储重新加载的数据
[应用程序
]适用于多线程
仅当您添加自己的线程同步逻辑时。应用程序
上的属性和函数并没有什么神奇之处可以使它们成为线程安全的
在没有地方存储可变数据的地方,这是最好的选择
您希望保留的任何数据都应存储在磁盘(数据库、SharedReferences
或其他类型的文件)或服务器上
因此,我的问题仍然是如何缓解它
您希望保留的任何数据都应存储在磁盘(数据库、SharedReferences
或其他类型的文件)或服务器上。将内存缓存用作缓存
因为像SQLite这样的东西是无用的,它们不是线程安全的
如果在操作中使用相同的SQLiteDatabase
实例,则SQLite是线程安全的
有效地使任何事情都无法并行运行
如果您觉得SQLite令人讨厌,当然欢迎您使用其他持久数据存储
现在一夜之间,应用程序对象有时可能是空的。i、 e.我使用该应用程序,然后去睡觉,早上回去测试,所有json缓存都是空的
您的进程很可能已终止。见和
我需要做的是检测安卓何时将缓存夷为平地
流程终止时不会通知您
或者至少知道Android保留应用程序扩展的最短时间
您的进程可以在离开前台几毫秒后终止
[应用程序
可以作为数据存储
仅适用于可以轻松从持久数据存储重新加载的数据
[应用程序
]适用于多线程
仅当您添加自己的线程同步逻辑时。应用程序
上的属性和函数并没有什么神奇之处可以使它们成为线程安全的
在没有地方存储可变数据的地方,这是最好的选择
您希望保留的任何数据都应存储在磁盘(数据库、SharedReferences
或其他类型的文件)或服务器上
因此,我的问题仍然是如何缓解它
您希望保留的任何数据都应存储在磁盘(数据库、SharedReferences
或其他类型的文件)或服务器上。将内存缓存用作缓存
因为像SQLite这样的东西是无用的,它们不是线程安全的
如果在操作中使用相同的SQLiteDatabase
实例,则SQLite是线程安全的
有效地使任何事情都无法并行运行
如果您觉得SQLite令人讨厌,当然欢迎您使用其他持久数据存储