1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.fwupgrade.saymanss;
 
import android.content.SharedPreferences;
import android.os.Build;
import android.os.StrictMode;
import android.support.multidex.MultiDexApplication;
 
import com.fwupgrade.saymanss.utils.AppPathInfo;
import com.fwupgrade.saymanss.utils.UtilTools;
 
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
 
/**
 * Created by Wangj on 2017/11/8.
 */
 
public class WDApplication extends MultiDexApplication {
 
    /** 全局实例变量. */
    private static WDApplication wdApplication;
    private static Lock reentantLock = new ReentrantLock();
 
    /** 保存多语言设置后的信息. */
    private SharedPreferences languageRecord;
 
    /**
     * 获取Application.
     * @return
     */
    public static WDApplication getInstance() {
        if (wdApplication == null) {
            try {
                reentantLock.lock();
                if (wdApplication == null) {
                    wdApplication = new WDApplication();
                }
            } finally {
                reentantLock.unlock();
            }
        }
        return wdApplication;
    }
 
    @Override
    public void onCreate() {
        super.onCreate();
        WDApplication.wdApplication = this;
        /** 初始化应用程序信息 */
        initApplicationInformation();
 
        //解决android N(>=24)系统以上分享 路径为file://时的 android.os.FileUriExposedException异常
        if (Build.VERSION.SDK_INT >= 24) {
            StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
            StrictMode.setVmPolicy(builder.build());
        }
    }
 
    /**
     * 初始化应用程序Information.
     */
    private void initApplicationInformation() {
        /** 创建临时的缓存目录 */
        createTempCacheDir();
    }
 
    /**
     * Create temporary folder  for  caching  applications's cache file.
     */
    private void createTempCacheDir() {
        UtilTools.createFolderInSdcard(AppPathInfo.getLogPath());
        UtilTools.createFolderInSdcard(AppPathInfo.getFwSavePath());
    }
 
}