黑屏原因是加载地图耗时过长,我们可以把加载地图的方法放到子线程中,执行完毕发送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();
在线加载地图过慢,需要等一段时间,可以设置几秒之后控件就消失进入地图加载界面,也是同样可以的。