左晓为主开发手持机充值管理机
generallibrary/src/main/java/com/dayu/general/BaseApplication.kt
@@ -1,11 +1,83 @@
package com.dayu.general
import android.app.Application
import android.nfc.Tag
import com.dayu.general.dao.BaseDaoSingleton
import com.dayu.general.dao.ProjectDataDao
public class BaseApplication : Application() {
class BaseApplication private constructor() {
    override fun onCreate() {
        super.onCreate()
    companion object {
        @JvmField
        var application: Application? = null
        private const val TAG = "ApiManager"
        @Volatile
        private var myApplication: BaseApplication? = null
        var tag: String = ""
        var token: String = ""
        var userId: String = ""
        var userName: String = ""
        var userPhone: String = ""
        //片区信息
        var blockId:String=""
        var blockName:String=""
        // 水价信息
        var waterPrice: Double = 0.0
        // MainActivity的引用,用于调用水价获取方法
        private var mainActivityInstance: com.dayu.general.activity.MainActivity? = null
        var projectDataDao: ProjectDataDao? = null
        @JvmStatic
        fun getInstance(application: Application): BaseApplication {
            if (myApplication == null) {
                BaseApplication.application = application
                myApplication = BaseApplication().apply {
                    // 通过实例调用 init()
                    init()
                }
            }
            return myApplication as BaseApplication
        }
        /**
         * 设置MainActivity实例
         */
        fun setMainActivity(activity: com.dayu.general.activity.MainActivity?) {
            mainActivityInstance = activity
        }
        /**
         * 请求获取水价,如果为空则调用MainActivity的获取方法
         */
        fun requestWaterPrice(): Double {
            if (waterPrice <= 0.0) {
                // 如果水价为空且MainActivity实例存在,则调用获取方法
                mainActivityInstance?.getWaterPriceFromActivity()
            }
            // 如果水价仍为0,返回默认值
            return if (waterPrice > 0.0) waterPrice else 0.9
        }
    }
     fun init() {
        projectDataDao = application?.let { BaseDaoSingleton.getInstance(it).projectDataDao() }
        if (projectDataDao != null) {
            val projectDataBean = projectDataDao?.findFirst()
            if (projectDataBean != null) {
                tag = projectDataBean.projectTag
            }
        }
    }
}