android - 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)
}
}
}
解决方案
很可能,您的进程在您的应用程序处于后台时被终止。这是完全正常的,并且从一开始就是 Android 的一部分。
推荐阅读
- mongodb - 在MongoDB中计算每5秒的移动平均值
- python - 开始处理异步任务,同时将它们添加到事件循环中
- python - pySerial 和 Arduino 通信
- github - GitHub 中的图像不适用于自述文件
- jquery - jquery:计算字符数,对某些标签进行不同的计数
- html - Chrome 将空格添加到
使用时的标记
- selenium - selenium c#等待使用元素名称而不是定位器(By.Id)
- python - 如何对数组进行批量计算
- reactjs - 打开一个
通过单击在另一个组件中呈现的元素 - asp.net-core - .NET Core 2.1 MVC 身份授权 - 不同部分的不同用户角色