gpt4 book ai didi

Android:使用 AsyncTask 时出现 "Calling thread must be a prepared Looper thread"错误

转载 作者:太空狗 更新时间:2023-10-29 15:37:46 24 4
gpt4 key购买 nike

我创建了一个 AsyncTask 来检索精度为 20 米的 GPS 位置。我想执行一个 while do 循环,直到准确度可以接受。

问题是当我请求更新位置时出现异常。

java.lang.NullPointerException: Calling thread must be a prepared Looper thread.

这是一段出错的代码

@Override
protected String doInBackground(Void... params) {
if (ActivityCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return null;
}
mLocationRequest.setInterval(100);
mLocationRequest.setPriority(100);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
while (mLastLocation == null || (mLastLocation.getAccuracy()>Float.parseFloat("20.0") && mLastLocation.hasAccuracy())){
try {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,activity);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
} catch (SecurityException secex) {

}
}

return null;
}

最佳答案

这一整天的工作让我很烦恼。我有 FusedLocationApi 在服务中的后台运行。

我所做的 - 我在其他地方读到它 - 是添加 Looper.getMainLooper() 作为 requestLocationUpdates() 的最后一个参数。

所以,而不是这个

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,activity);

你会有

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this, Looper.getMainLooper());

如果您阅读全文 FusedLocationProviderApi页面,您会看到该方法将根据参数执行不同的操作。

关于Android:使用 AsyncTask 时出现 "Calling thread must be a prepared Looper thread"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com