/** * Copyright (c) 2013-2014, Rinc Liu (http://rincliu.com). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.rincliu.library.app; import android.app.Application; import android.content.res.Configuration; import android.graphics.Bitmap; import com.rincliu.library.BuildConfig; import com.rincliu.library.common.persistence.http.AsyncHttpClient; import com.rincliu.library.common.persistence.image.cache.disc.impl.TotalSizeLimitedDiscCache; import com.rincliu.library.common.persistence.image.cache.disc.naming.Md5FileNameGenerator; import com.rincliu.library.common.persistence.image.cache.memory.impl.LruMemoryCache; import com.rincliu.library.common.persistence.image.core.DisplayImageOptions; import com.rincliu.library.common.persistence.image.core.ImageLoader; import com.rincliu.library.common.persistence.image.core.ImageLoaderConfiguration; import com.rincliu.library.common.persistence.image.core.assist.QueueProcessingType; import com.rincliu.library.common.persistence.image.core.decode.BaseImageDecoder; import com.rincliu.library.common.persistence.image.core.display.FadeInBitmapDisplayer; import com.rincliu.library.common.persistence.image.core.download.BaseImageDownloader; import com.rincliu.library.common.persistence.image.utils.StorageUtils; import com.rincliu.library.common.reference.push.RLPushHelper; import com.rincliu.library.entity.RLDisplayInfo; import com.rincliu.library.util.RLSysUtil; public class RLApplication extends Application { private RLDisplayInfo displayInfo; public ImageLoader imgLoader; public DisplayImageOptions defaultDisplayImageOptions; public AsyncHttpClient httpClient; @Override public void onCreate() { super.onCreate(); String enablePush = RLSysUtil.getApplicationMetaData(this, "ENABLE_PUSH"); if (enablePush != null && enablePush.equals("true")) { RLPushHelper.getInstance(this).init(BuildConfig.DEBUG); } initImageCache(); initHttpClient(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } @Override public void onLowMemory() { super.onLowMemory(); } @Override public void onTerminate() { super.onTerminate(); } public RLDisplayInfo getDisplayInfo() { return displayInfo; } public void setDisplayInfo(RLDisplayInfo displayInfo) { this.displayInfo = displayInfo; } private void initImageCache() {// TODO ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(this); builder.threadPoolSize(10).threadPriority(Thread.NORM_PRIORITY - 2).tasksProcessingOrder( QueueProcessingType.LIFO).imageDownloader(new BaseImageDownloader(this)).imageDecoder( new BaseImageDecoder(BuildConfig.DEBUG)).defaultDisplayImageOptions(DisplayImageOptions.createSimple()).denyCacheImageMultipleSizesInMemory(); long availableMemory = Runtime.getRuntime().maxMemory(); if (availableMemory > 0) { builder.memoryCache(new LruMemoryCache((int) (availableMemory / 10))).memoryCacheSize( (int) (availableMemory / 10)).memoryCacheSizePercentage(10); } long availableStorage = RLSysUtil.getAvailableExternalStorageSize(); if (availableStorage > 0) { builder.discCache( new TotalSizeLimitedDiscCache(StorageUtils.getCacheDirectory(this), (int) (availableStorage / 10))).discCacheFileCount( 1024 * 8).discCacheSize((int) (availableStorage / 10)).discCacheFileNameGenerator( new Md5FileNameGenerator()); } if (BuildConfig.DEBUG) { builder.writeDebugLogs(); } imgLoader = ImageLoader.getInstance(); imgLoader.init(builder.build()); defaultDisplayImageOptions = new DisplayImageOptions.Builder().cacheInMemory( Runtime.getRuntime().freeMemory() > 0).cacheOnDisc(RLSysUtil.getAvailableExternalStorageSize() > 0).resetViewBeforeLoading( true).bitmapConfig(Bitmap.Config.RGB_565).displayer(new FadeInBitmapDisplayer(300)).build(); } private void initHttpClient() {// TODO httpClient = new AsyncHttpClient(); httpClient.addHeader("Connection", "Close"); httpClient.addHeader("Accept", "*/*"); httpClient.setTimeout(1000 * 60); } }