Can't create handler inside thread that has not called Looper.prepare()

发布于 2021-11-23 09:01:48 字数 1504 浏览 817 评论 1

@迷途d书童 你好,想跟你请教个问题:

OSCHINA Android 客户端中用到Thread和Handler很正常,为什么我用就有异常呢?异常提示是

10-31 11:12:12.344: V/crashReport(7106): Exception: Can't create handler inside thread that has not called Looper.prepare()


这是我仿写的代码

private void refreshTaxi(Drawable marker) {
		final Handler handler = new Handler() {
			public void handleMessage(Message msg) {
				if (msg.what == -1 && msg.obj != null) {
					((AppException) msg.obj).makeToast(MainActivity.this);
				}
			}
		};
		final OverItemT oit = new OverItemT(marker, this);
		new Thread() {
			public void run() {
				Message msg = new Message();
				// 获取出租车列表
				RequestData rd = new RequestData();
				RequestResult<List<Taxi>> r;
				try {
					r = rd.fetchTaxi(null, null);
					if (RequestResult.Success == r.resultCode) {
						List<Taxi> taxiList = r.data;
						oit.addOverItem(taxiList);
						mMapView.getOverlays().add(oit); // 添加ItemizedOverlay实例到mMapView
					} else {
						Toast.makeText(MainActivity.this, "服务器开小差,不能获取出租车信息",
								Toast.LENGTH_SHORT).show();
					}
				} catch (AppException e) {
					e.printStackTrace();
					msg.what = -1;
					msg.obj = e;
					handler.sendMessage(msg);
				}
			};
		}.start();
	}


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

緦唸λ蓇 2021-11-26 17:09:56

怎么解决的??

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文