我的代码在 10,000 次中有 9,999 次有效。但是,大约每 10,000 次,应用程序崩溃到 aUninitializedPropertyAccessException
这是有问题的,因为大约有 20,000~30,000 台 Android 设备使用我的代码在生产中。
有时,lateinit
变量的实际分配似乎并没有很快发生(因此导致上述异常)。
有没有其他人有类似的问题?你的解决方案是什么?
TcpService.kt
类 TcpService:服务(){ private lateinit var mTcpClient: TcpClient
override fun onCreate() {
registerReceiver(object: BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when(intent.action) {
// This will cause an Uninitialized Property Exception 1 in 10,000 times
ACTION_SEND_MESSAGE -> mTcpClient.sendMessageAsync(intent.getStringExtra(EXTRA_NEW_MESSAGE)
}
}
}, IntentFilter(ACTION_SEND_MESSAGE)
})
}
override fun onStart() {
mTcpClient = mTcpClient()
}
// ...
}
TcpClient.kt
class TcpClient() {
init {
// ...
sendBroadcast(Intent(ACTION_SEND_MESSAGE).putExtra(EXTRA_NEW_MESSAGE, "Message Contents")
}
// ...
}