相关疑难解决方法(0)

AsyncTask和Looper.prepare()错误

我有以下代码

class OverlayTask extends AsyncTask<Void, Void, Void> {
    @Override
    public void onPreExecute() {

        if (sites != null) {
            myMapView.getOverlays().remove(sites);
            myMapView.invalidate();
            sites = null;
        }
    }

    @Override
    public Void doInBackground(Void... unused) {
            grabShipsWithLocation();
            return (null);
    }

    @Override
    public void onPostExecute(Void unused) {
        myMapView.getOverlays().add(sites);
        myMapView.invalidate();
        isLoading = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎在一些测试设备上工作正常,但我发现在开发控制台上出现了很多错误.我似乎无法弄清楚为什么以及在哪里放置这个Looper.prepare().需要它吗?

java.lang.ExceptionInInitializerError
at com.test.appname.FinderMain$1.gotLocation(FinderMain.java:286)
at com.test.appname.MyLocation$GetLastLocation.run(MyLocation.java:89)
at java.util.Timer$TimerImpl.run(Timer.java:289)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421)
at android.os.AsyncTask.<clinit>(AsyncTask.java:152)
Run Code Online (Sandbox Code Playgroud)

按要求MyLocation.java

    class GetLastLocation …
Run Code Online (Sandbox Code Playgroud)

android looper android-asynctask

31
推荐指数
2
解决办法
5万
查看次数

标签 统计

android ×1

android-asynctask ×1

looper ×1