如何在android应用程序中使用kotlin循环来避免ANR?
我在android应用程序中使用kotlin。我编写了以下用于解码坐标的函数:如何在android应用程序中使用kotlin循环来避免ANR?,android,android-studio,kotlin,Android,Android Studio,Kotlin,我在android应用程序中使用kotlin。我编写了以下用于解码坐标的函数: private fun decodeCoordinates(address: String) { var lat: String = "" var lng: String = "" var flag = true var count = 0 while (count < address.length) { if (address[count].eq
private fun decodeCoordinates(address: String) {
var lat: String = ""
var lng: String = ""
var flag = true
var count = 0
while (count < address.length) {
if (address[count].equals(',')) {
flag = false;
continue
}
if (flag) {
lat += address[count]
} else {
lng += address[count]
}
count++;
}
Log.i("dxdiag", "Lat: $lat")
Log.i("dxdiag", "Lng: $lng")
}
private坐标(地址:字符串){
var lat:String=“”
var lng:String=“”
var flag=true
变量计数=0
while(计数<地址长度){
如果(地址[count]。等于(',')){
flag=false;
持续
}
国际单项体育联合会(旗){
lat+=地址[计数]
}否则{
lng+=地址[计数]
}
计数++;
}
Log.i(“dxdiag”,“Lat:$Lat”)
日志i(“dxdiag”,“液化天然气:$Lng”)
}
但应用程序挂起,如果我删除
继续
,则应用程序不挂起问题是您正在更改循环内的列表长度,这将导致ANR。使用循环代码:
var length = address.legth
while (count < length) {
if (address[count].equals(',')) {
flag = false;
continue
}
if (flag) {
lat += address[count]
} else {
lng += address[count]
}
count++;
}
var length=address.legth
while(计数<长度){
如果(地址[count]。等于(',')){
flag=false;
持续
}
国际单项体育联合会(旗){
lat+=地址[计数]
}否则{
lng+=地址[计数]
}
计数++;
}
问题在于,您正在更改循环中列表的长度,这将导致ANR。使用循环代码:
var length = address.legth
while (count < length) {
if (address[count].equals(',')) {
flag = false;
continue
}
if (flag) {
lat += address[count]
} else {
lng += address[count]
}
count++;
}
var length=address.legth
while(计数<长度){
如果(地址[count]。等于(',')){
flag=false;
持续
}
国际单项体育联合会(旗){
lat+=地址[计数]
}否则{
lng+=地址[计数]
}
计数++;
}
继续之前,只需输入count++即可。如果不是的话,你就处在一个无限循环中,因为计数永远不会增加。谢谢,在继续之前只需输入计数+。否则,您将处于无限循环中,因为计数从未增加。谢谢,一旦遇到,“
,它仍将执行无限循环。在调用continue
之前,您需要增加计数。一旦遇到,“
,它仍然会执行无限循环。您需要先增加计数,然后再调用continue