首页 > 解决方案 > Android 应用在通话后将变量设置为默认值

问题描述

我注意到我的应用程序中有一个错误,其中变量在短信和电话后被重置为其初始值 - 此错误并非每次都会发生。

几乎就像再次调用 onCreate 一样,因为 onResume 和 onStart 方法只包含绑定到服务和保存浮动按钮坐标的函数。

对此有什么解释吗?其他人遇到过这个问题吗?

我的应用程序生命周期方法如下

private var stopped = false
override fun onResume() {
    super.onResume()
    /* Bind to Service */
    if (!mBound){
        mBound = bindScanner(this,versionSDK, connection)
        mBound = true
        mService?.send(getMsg(MSG_CREATE))
    }
    if (stopped){
        stopped = false
        mService?.send(getMsg(MSG_CREATE))
    }
}
override fun onPause() {
    super.onPause()
    if(!stopped){
        stopped = true
        mService?.send(getMsg(MSG_DESTROY))
    }
}

override fun onStop() {
    super.onStop()
    if(!stopped){
        stopped = true
        mService?.send(getMsg(MSG_DESTROY))
    }

    if (mBound){
        unbindService(connection)
        mBound = false
    }

    if (floatButton){
        val params = floatBTN?.layoutParams as ConstraintLayout.LayoutParams
        val data : MutableMap<String,String> = mutableMapOf()
        data["X"] = params.leftMargin.toString()
        data["Y"] = params.topMargin.toString()
        if (myDb.updateRowData("floatbtn",data,"Activity", FLOAT_BTN_PK_VAL) == 0){
            data.clear()
            data["Activity"] = FLOAT_BTN_PK_VAL
            data["X"] = params.leftMargin.toString()
            data["Y"] = params.topMargin.toString()
            myDb.insertData("floatbtn",data)
        }
    }
}

标签: androidkotlin

解决方案


很可能,您的进程在您的应用程序处于后台时被终止。这是完全正常的,并且从一开始就是 Android 的一部分


推荐阅读