BaseApplication.kt 7.87 KB
Newer Older
jiangjiantao's avatar
jiangjiantao committed
1 2
package com.miya.fastcashier

jiangjiantao's avatar
jiangjiantao committed
3 4 5
import android.app.Activity
import android.os.Bundle
import androidx.multidex.MultiDexApplication
zhaopengxiang's avatar
zhaopengxiang committed
6
import com.blankj.utilcode.util.LogUtils
jiangjiantao's avatar
jiangjiantao committed
7 8 9 10 11 12 13 14 15
import com.elvishew.xlog.LogConfiguration
import com.elvishew.xlog.LogLevel
import com.elvishew.xlog.XLog
import com.elvishew.xlog.printer.AndroidPrinter
import com.elvishew.xlog.printer.ConsolePrinter
import com.elvishew.xlog.printer.Printer
import com.elvishew.xlog.printer.file.FilePrinter
import com.elvishew.xlog.printer.file.backup.NeverBackupStrategy
import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator
16
import com.miya.fastcashier.service.AccountService
17
import com.miya.fastcashier.utils.ContextUtils
jiangjiantao's avatar
jiangjiantao committed
18
import com.miya.fastcashier.utils.DateUtils
19
import com.miya.fastcashier.utils.DensityUtils
zhaopengxiang's avatar
zhaopengxiang committed
20
import com.miya.fastcashier.utils.LogFileUtils
zhaopengxiang's avatar
zhaopengxiang committed
21
import com.miya.fastcashier.utils.manage.LocalKeyDataMKManageKit
22
import com.miya.fastcashier.utils.manage.OrderRecordManageKit
jiangjiantao's avatar
jiangjiantao committed
23
import com.miya.print.PrinterManager
zhaopengxiang's avatar
zhaopengxiang committed
24 25
import com.sdy.miya.moblie.component.pay.core.net.MiYaPayMobileApiClient
import com.sdy.miya.moblie.component.pay.core.net.MiyaHttpLoggingInterceptor
jiangjiantao's avatar
jiangjiantao committed
26
import com.sdy.miya.moblie.component.pay.core.utils.PayLogFileUtils
jiangjiantao's avatar
jiangjiantao committed
27
import com.tencent.mmkv.MMKV
jiangjiantao's avatar
jiangjiantao committed
28 29 30
import java.io.File
import java.util.*

jiangjiantao's avatar
jiangjiantao committed
31

jiangjiantao's avatar
jiangjiantao committed
32
class BaseApplication : MultiDexApplication() {
33 34 35 36 37 38

    companion object {
        private lateinit var instance: BaseApplication
        fun getApplication() = instance
    }

jiangjiantao's avatar
jiangjiantao committed
39 40
    override fun onCreate() {
        super.onCreate()
41 42
        instance = this

43
        ContextUtils.init(this)
jiangjiantao's avatar
jiangjiantao committed
44 45 46 47
        //打印机初始化
        PrinterManager.getInstance().init(this)
        //屏幕适配
        screenAdapt()
jiangjiantao's avatar
jiangjiantao committed
48 49 50 51 52
        MMKV.initialize(this)
        //日志
        logConfig()
    }

53
    private fun logConfig() {
jiangjiantao's avatar
jiangjiantao committed
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

        XLog.init(LogLevel.ALL);

        val config = LogConfiguration.Builder()
            .logLevel(
                if (BuildConfig.DEBUG) LogLevel.ALL // 指定日志级别,低于该级别的日志将不会被打印,默认为 LogLevel.ALL
                else LogLevel.NONE
            )
            .enableThreadInfo() // 允许打印线程信息,默认禁止
            .build()

        val androidPrinter: Printer = AndroidPrinter(true) // 通过 android.util.Log 打印日志的打印器

        val consolePrinter: Printer = ConsolePrinter() // 通过 System.out 打印日志到控制台的打印器

        val filePrinter: Printer = FilePrinter.Builder(
            applicationContext.getExternalFilesDir(null)!!
                .absolutePath
                    + File.separator + "log"
        ) // 指定保存日志文件的路径
            .fileNameGenerator(DateFileNameGenerator()) // 指定日志文件名生成器,默认为 ChangelessFileNameGenerator("log")
            .backupStrategy(NeverBackupStrategy()) // 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024)
            .build()

        XLog.init( // 初始化 XLog
            config,  // 指定日志配置,如果不指定,会默认使用 new LogConfiguration.Builder().build()
            androidPrinter,  // 添加任意多的打印器。如果没有添加任何打印器,会默认使用 AndroidPrinter(Android)/ConsolePrinter(java)
            consolePrinter,
            filePrinter
        )


        //支付日志文件夹
87 88 89 90 91
        PayLogFileUtils.initLogPath(
            applicationContext.getExternalFilesDir(null)!!
                .absolutePath
                    + File.separator + "payLog"
        )
zhaopengxiang's avatar
zhaopengxiang committed
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

        var loggingInterceptor: MiyaHttpLoggingInterceptor? = null
        try {
            loggingInterceptor = MiyaHttpLoggingInterceptor { message ->
                if (!LogFileUtils.isProhibitWrite) {
                    LogFileUtils.writeLog(
                        ContextUtils.getContext(),
                        DateUtils.getDateStringByTimeStamp(System.currentTimeMillis())
                            .toString() + " " + message + "\n"
                    )
                }
                if (BuildConfig.DEBUG) {
                    LogUtils.d("fastcashier", message)
                }
            }
            loggingInterceptor.level = MiyaHttpLoggingInterceptor.Level.BODY
        } catch (ex: Exception) {
            ex.printStackTrace()
        }
        MiYaPayMobileApiClient.init(true, loggingInterceptor)
jiangjiantao's avatar
jiangjiantao committed
112 113 114 115 116
    }

    private fun screenAdapt() {
        registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
            override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
117 118
                DensityUtils.setDensity(activity, this@BaseApplication)
                XLog.d(DateUtils.format18(Date()) + "  onActivityCreated")
119 120 121 122
                if (!LogFileUtils.isProhibitWrite) {
                    LogFileUtils.writeLog(ContextUtils.getContext(),
                        "\n${DateUtils.format18(Date())}########onActivityCreated() called with: activity = [$activity]\n")
                }
jiangjiantao's avatar
jiangjiantao committed
123
            }
124

jiangjiantao's avatar
jiangjiantao committed
125
            override fun onActivityStarted(activity: Activity) {
126
                XLog.d(DateUtils.format18(Date()) + "  onActivityStarted")
127 128 129 130
                if (!LogFileUtils.isProhibitWrite) {
                    LogFileUtils.writeLog(ContextUtils.getContext(),
                        "\n${DateUtils.format18(Date())}########onActivityStarted() called with: activity = [$activity]\n")
                }
jiangjiantao's avatar
jiangjiantao committed
131
            }
132

jiangjiantao's avatar
jiangjiantao committed
133
            override fun onActivityResumed(activity: Activity) {
134
                XLog.d(DateUtils.format18(Date()) + "  onActivityResumed")
135 136 137 138
                if (!LogFileUtils.isProhibitWrite) {
                    LogFileUtils.writeLog(ContextUtils.getContext(),
                        "\n${DateUtils.format18(Date())}########onActivityResumed() called with: activity = [$activity]\n")
                }
jiangjiantao's avatar
jiangjiantao committed
139
            }
140

jiangjiantao's avatar
jiangjiantao committed
141
            override fun onActivityPaused(activity: Activity) {
142
                XLog.d(DateUtils.format18(Date()) + "  onActivityPaused")
143 144 145 146
                if (!LogFileUtils.isProhibitWrite) {
                    LogFileUtils.writeLog(ContextUtils.getContext(),
                        "\n${DateUtils.format18(Date())}########onActivityPaused() called with: activity = [$activity]\n")
                }
jiangjiantao's avatar
jiangjiantao committed
147
            }
148

jiangjiantao's avatar
jiangjiantao committed
149
            override fun onActivityStopped(activity: Activity) {
150
                XLog.d(DateUtils.format18(Date()) + "  onActivityStopped")
151 152 153 154
                if (!LogFileUtils.isProhibitWrite) {
                    LogFileUtils.writeLog(ContextUtils.getContext(),
                        "\n${DateUtils.format18(Date())}########onActivityStopped() called with: activity = [$activity]\n")
                }
jiangjiantao's avatar
jiangjiantao committed
155
            }
156

jiangjiantao's avatar
jiangjiantao committed
157
            override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
158
                XLog.d(DateUtils.format18(Date()) + "  onActivitySaveInstanceState")
159 160 161 162 163 164
                if (!LogFileUtils.isProhibitWrite) {
                    val memoryStatus = "\ttotalMemory:${Runtime.getRuntime().totalMemory()}\tfreeMemory:${Runtime.getRuntime().freeMemory()}"
                    LogFileUtils.writeLog(ContextUtils.getContext(),
                        "\n${DateUtils.format18(Date())}########onActivitySaveInstanceState() called with:" +
                                " activity = [$activity]\nmemoryStatus: $memoryStatus")
                }
jiangjiantao's avatar
jiangjiantao committed
165
            }
166

jiangjiantao's avatar
jiangjiantao committed
167
            override fun onActivityDestroyed(activity: Activity) {
168
                XLog.d(DateUtils.format18(Date()) + "  onActivityDestroyed")
169 170 171 172
                if (!LogFileUtils.isProhibitWrite) {
                    LogFileUtils.writeLog(ContextUtils.getContext(),
                        "\n${DateUtils.format18(Date())}########onActivityDestroyed() called with: activity = [$activity]\n")
                }
jiangjiantao's avatar
jiangjiantao committed
173 174 175 176
            }
        })
    }

177
    fun resetConfig() {
zhaopengxiang's avatar
zhaopengxiang committed
178
        LocalKeyDataMKManageKit.clearCommonData()
179 180 181 182 183
        //清除本地订单昨天的流水信息
        OrderRecordManageKit.clearOrderDataYeaterday()
        //清除本地个人信息
        AccountService.clear()
    }
jiangjiantao's avatar
jiangjiantao committed
184
}