相关疑难解决方法(0)

Android:当我使用AsyncTask时,"调用线程必须是准备好的Looper线程"错误

我创建了一个AsyncTask来检索具有20米精度的GPS位置.我想执行一个while循环,直到准确性可以加入.

问题是我请求更新职位时遇到异常.

java.lang.NullPointerException: Calling thread must be a prepared Looper thread.
Run Code Online (Sandbox Code Playgroud)

这是一段错误的代码

@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;
        }
Run Code Online (Sandbox Code Playgroud)

multithreading android

2
推荐指数
1
解决办法
1564
查看次数

标签 统计

android ×1

multithreading ×1