Tag: looper

如何创buildLooper线程,然后立即发送消息?

我有一个工作线程,在后台,处理消息。 像这样的东西: class Worker extends Thread { public volatile Handler handler; // actually private, of course public void run() { Looper.prepare(); mHandler = new Handler() { // the Handler hooks up to the current Thread public boolean handleMessage(Message msg) { // … } }; Looper.loop(); } } 从主线程(UI线程,并不重要)我想要做这样的事情: Worker worker = new Worker(); worker.start(); worker.handler.sendMessage(…); […]

Android中的Looper,Handler和MessageQueue之间有什么关系?

我已经检查了Looper , Handler和MessageQueue的官方Android文档/指南。 但我无法得到它。 我是Android新手,对这些概念感到困惑。

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; } } 这似乎在一些testing设备上正常工作,但我看到很多错误出现在开发控制台上。 我似乎无法解决为什么和在哪里把这个Looper.prepare()。 需要吗? java.lang.ExceptionInInitializerError at com.test.appname.FinderMain$1.gotLocation(FinderMain.java:286) at […]

不能在AsyncTask中为ProgressDialog调用没有调用Looper.prepare()的线程内部的处理程序

我不明白为什么我得到这个错误。 我使用AsyncTask在后台运行一些进程。 我有: protected void onPreExecute() { connectionProgressDialog = new ProgressDialog(SetPreference.this); connectionProgressDialog.setCancelable(true); connectionProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); connectionProgressDialog.setMessage("Connecting to site…"); connectionProgressDialog.show(); downloadSpinnerProgressDialog = new ProgressDialog(SetPreference.this); downloadSpinnerProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); downloadSpinnerProgressDialog.setMessage("Downloading wallpaper…"); } 当我进入doInBackground()取决于条件I: […] connectionProgressDialog.dismiss(); downloadSpinnerProgressDialog.show(); […] 每当我尝试downloadSpinnerProgressDialog.show()我收到错误。 任何想法家伙?