Android 在应用程序启动时加载大型对象

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

我想在Android应用程序启动时从资源和资产中加载大型阵列,并在使用的多个活动中访问这些对象

现在,我正在加载启动活动中的资源:

StartActivity.java:

        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);
星触觉(意向);
完成();
}

但这会多次复制对象并导致内存问题。在应用程序的生命周期内,我如何在我的活动中共享一个对象,并且只加载和存储一次?

将数据放入
静态
字段。这是故意的内存泄漏,因此要小心:

  • 不要不断地输入更多的数据

  • 如果你到了不再需要它的地步,
    null
    将该字段删除,以允许Android对该数据进行垃圾收集

另外,请注意,这些数据的寿命只有进程的寿命。如果Android破坏并重新创建了您的进程,您需要准备好从您的资源/资产/任何东西中再次延迟加载这些数据

根据数据的性质,您可以考虑生成一些具有数据的java代码,即<代码> R>代码>和 BuudCuffig < /Cube >生成。然后,保证数据在需要时总是存在。

UL>
  • 注册自定义
    应用程序
    实例。签出
  • 您可以决定将“大对象”直接存储在应用程序中,但最好保留一个单例对象
  • 调用该方法加载您的“大资源”,直到一切都在中完成。这保证您的资源只加载一次,并且在应用程序启动时加载
  • 异步加载所述资源