package net.coding.program; import android.app.ActivityManager; import android.content.Context; import android.os.Environment; import android.support.multidex.MultiDexApplication; import android.util.Log; import com.baidu.mapapi.SDKInitializer; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import net.coding.program.common.Global; import net.coding.program.common.PhoneType; import net.coding.program.common.RedPointTip; import net.coding.program.common.Unread; import net.coding.program.common.network.MyAsyncHttpClient; import net.coding.program.common.util.FileUtil; import net.coding.program.model.AccountInfo; import net.coding.program.model.UserObject; import net.coding.program.third.MyImageDownloader; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; /** * Created by cc191954 on 14-8-9. * 用来做一些初始化工作,比如设置 host, * 初始化图片库配置 */ public class MyApp extends MultiDexApplication { public static float sScale; public static int sWidthDp; public static int sWidthPix; public static int sHeightPix; public static int sEmojiNormal; public static int sEmojiMonkey; public static UserObject sUserObject; public static Unread sUnread; private static int sMainCreate = 0; public static boolean getMainActivityState() { return sMainCreate > 0; } public static void setMainActivityState(boolean create) { if (create) { ++sMainCreate; } else { --sMainCreate; } Log.d("", "showsss " + sMainCreate); } public static void initImageLoader(Context context) { ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .diskCacheFileNameGenerator(new Md5FileNameGenerator()) .diskCacheSize(50 * 1024 * 1024) // 50 Mb .diskCacheFileCount(300) .imageDownloader(new MyImageDownloader(context)) .tasksProcessingOrder(QueueProcessingType.LIFO) // .writeDebugLogs() // Remove for release app .diskCacheExtraOptions(sWidthPix / 3, sWidthPix / 3, null) .build(); ImageLoader.getInstance().init(config); } private static String getProcessName(Context context) { ActivityManager actMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> appList = actMgr.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo info : appList) { if (info.pid == android.os.Process.myPid()) { return info.processName; } } return ""; } private static String getSystemProperty(String propName) { String line; BufferedReader input = null; try { Process p = Runtime.getRuntime().exec("getprop " + propName); input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024); line = input.readLine(); input.close(); } catch (IOException ex) { Log.e("", "Unable to read sysprop " + propName, ex); return null; } finally { if (input != null) { try { input.close(); } catch (IOException e) { Log.e("", "Exception while closing InputStream", e); } } } return line; } @Override public void onCreate() { super.onCreate(); AccountInfo.CustomHost customHost = AccountInfo.getCustomHost(this); String host = customHost.getHost(); if (host.isEmpty()) { host = Global.DEFAULT_HOST; } Global.HOST = host; Global.HOST_API = Global.HOST + "/api"; try { Global.sVoiceDir = FileUtil.getDestinationInExternalFilesDir(this, Environment.DIRECTORY_MUSIC, FileUtil.DOWNLOAD_FOLDER).getAbsolutePath(); Log.w("VoiceDir", Global.sVoiceDir); } catch (Exception e) { Global.errorLog(e); } MyAsyncHttpClient.init(this); initImageLoader(this); loadBaiduMap(); sScale = getResources().getDisplayMetrics().density; sWidthPix = getResources().getDisplayMetrics().widthPixels; sHeightPix = getResources().getDisplayMetrics().heightPixels; sWidthDp = (int) (sWidthPix / sScale); sEmojiNormal = getResources().getDimensionPixelSize(R.dimen.emoji_normal); sEmojiMonkey = getResources().getDimensionPixelSize(R.dimen.emoji_monkey); sUserObject = AccountInfo.loadAccount(this); sUnread = new Unread(); RedPointTip.init(this); } private void loadBaiduMap() { if (!PhoneType.isX86or64()) { // x86的机器上会抛异常,因为百度没有提供x86的.so文件 // 64 位的机器也不行 // 只在主进程初始化lbs if (this.getPackageName().equals(getProcessName(this))) { SDKInitializer.initialize(this); } } } }