Android 在应用程序启动时加载大型对象
我想在Android应用程序启动时从资源和资产中加载大型阵列,并在使用的多个活动中访问这些对象 现在,我正在加载启动活动中的资源: StartActivity.java:Android 在应用程序启动时加载大型对象,android,memory-management,global-variables,android-assets,Android,Memory Management,Global Variables,Android Assets,我想在Android应用程序启动时从资源和资产中加载大型阵列,并在使用的多个活动中访问这些对象 现在,我正在加载启动活动中的资源: StartActivity.java: Object heavyObject; onCreate() { new AsyncTask<Void, Void, Exception>() { @Override protected Exception doInB
Object heavyObject;
onCreate() {
new AsyncTask<Void, Void, Exception>() {
@Override
protected Exception doInBackground(Void... params) {
try {
Assets assets = new Assets(context);
File assetDir = assets.syncAssets();
heavyObject = heavySetup(assetDir);
} catch (IOException e) {
return e;
}
return null;
}
}.execute();
...
public void goToNextActivity() {
Intent intent = new Intent(base_activity, NextActivity.class);
Bundle b = new Bundle();
b.putObject("ho", heavyObject);
intent.putExtras(b);
startActivity(intent);
finish();
}
对象重对象;
onCreate(){
新建异步任务(){
@凌驾
受保护的异常doInBackground(无效…参数){
试一试{
资产=新资产(上下文);
文件assetDir=assets.syncAssets();
heavyObject=heavySetup(assetDir);
}捕获(IOE异常){
返回e;
}
返回null;
}
}.execute();
...
public void goToNextActivity(){
意向意向=新意向(基本活动,nextractivity.class);
Bundle b=新Bundle();
b、 putObject(“ho”,重对象);
意向.附加条款(b);
星触觉(意向);
完成();
}
但这会多次复制对象并导致内存问题。在应用程序的生命周期内,我如何在我的活动中共享一个对象,并且只加载和存储一次?将数据放入
静态
字段。这是故意的内存泄漏,因此要小心:
- 不要不断地输入更多的数据
- 如果你到了不再需要它的地步,
将该字段删除,以允许Android对该数据进行垃圾收集null
根据数据的性质,您可以考虑生成一些具有数据的java代码,即<代码> R>代码>和
应用程序实例。签出