react native在加载大量图片时小伙伴们会发现,内存一路飙升150M-200M那都不是问题,今天就来优化一下内存,降至40M左右。
1:实现一个module
import android.app.ActivityManager; import android.content.Context; import android.os.Build; import android.support.annotation.Nullable; import com.facebook.cache.common.CacheKey; import com.facebook.cache.disk.DiskCacheConfig; import com.facebook.common.internal.AndroidPredicates; import com.facebook.common.internal.Supplier; import com.facebook.common.soloader.SoLoaderShim; import com.facebook.common.util.ByteConstants; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.imagepipeline.backends.okhttp3.OkHttpImagePipelineConfigFactory; import com.facebook.imagepipeline.cache.MemoryCacheParams; import com.facebook.imagepipeline.core.ImagePipelineConfig; import com.facebook.imagepipeline.core.ImagePipelineFactory; import com.facebook.imagepipeline.listener.RequestListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.modules.common.ModuleDataCleaner; import com.facebook.react.modules.fresco.SystraceRequestListener; import com.facebook.react.modules.network.OkHttpClientProvider; import com.facebook.soloader.SoLoader; import java.util.HashSet; import okhttp3.OkHttpClient; public class MyFrescoModule extends ReactContextBaseJavaModule implements ModuleDataCleaner.Cleanable { private @Nullable ImagePipelineConfig mConfig; public MyFrescoModule(ReactApplicationContext reactContext) { this(reactContext, getDefaultConfig(reactContext, null, null)); } public MyFrescoModule(ReactApplicationContext reactContext, RequestListener listener) { this(reactContext, getDefaultConfig(reactContext, listener, null)); } public MyFrescoModule( ReactApplicationContext reactContext, RequestListener listener, DiskCacheConfig diskCacheConfig) { this(reactContext, getDefaultConfig(reactContext, listener, diskCacheConfig)); } public MyFrescoModule(ReactApplicationContext reactContext, ImagePipelineConfig config) { super(reactContext); mConfig = config; } @Override public void initialize() { super.initialize(); // Make sure the SoLoaderShim is configured to use our loader for native libraries. // This code can be removed if using Fresco from Maven rath