Android解决地图在线加载黑屏

本文介绍了解决地图加载导致应用界面黑屏的方法。通过将地图加载任务放入子线程执行,并使用Handler机制通知主线程更新UI,有效避免了长时间阻塞导致的黑屏现象。提供了多种实现方案,包括使用ProgressDialog、隐藏指定View组件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

黑屏原因是加载地图耗时过长,我们可以把加载地图的方法放到子线程中,执行完毕发送handler消息,再接收做相应的处理。下面是以下几种方式:

private static final int MESSAGETYPE = 0;
private ProgressDialog progressDialog = null;
private Handler handler;
	progressDialog = ProgressDialog.show(this, "", "正在加载,请稍候...");
		new Thread() {
			public void run() {
				try {
					//写加载地图的代码
				} catch (Exception e) {

				}
				handler.sendEmptyMessage(MESSAGETYPE);
			}
		}.start();

		handler = new Handler() {
			public void handleMessage(Message message) {
				switch (message.what) {
				case MESSAGETYPE:
					progressDialog.dismiss(); // 关闭进度条
					break;
				}
			}
		};
这是用一个进度条来旋转显示,执行完后进度条消失。

private static final int MESSAGETYPE = 0;
private Handler handler;
		new Thread() {
			public void run() {
				try {
					//写加载地图的代码
				} catch (Exception e) {

				}
				handler.sendEmptyMessage(MESSAGETYPE);
			}
		}.start();

		handler = new Handler() {
			public void handleMessage(Message message) {
				switch (message.what) {
				case MESSAGETYPE:
					findViewById(R.id.pd).setVisibility(View.GONE);
					break;
				}
			}
		};
如果需要显示一个旋转界面,可以在当前类的布局里面加一层,如果在加载就显示旋转布局,执行完后控件隐藏。

new Handler().postDelayed(new Runnable() {  
		    @Override  
		    public void run() {  
		    	findViewById(R.id.picyure).setVisibility(View.GONE);
		    }  
		}, 3000); 
		
		new Thread() {
			public void run() {
				try {
					//写加载地图的代码
				} catch (Exception e) {
					
				}
			}
		}.start();
在线加载地图过慢,需要等一段时间,可以设置几秒之后控件就消失进入地图加载界面,也是同样可以的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值