80,493
社区成员
发帖
与我相关
我的任务
分享
03-17 13:42:17.527: W/EGL_emulation(9371): eglSurfaceAttrib not implemented
03-17 13:42:17.527: W/OpenGLRenderer(9371): Failed to set EGL_SWAP_BEHAVIOR on surface 0xae413580, error=EGL_SUCCESS
03-17 13:42:20.376: E/AndroidRuntime(9371): FATAL EXCEPTION: Thread-456
03-17 13:42:20.376: E/AndroidRuntime(9371): Process: com.zbq.mobilehospitalregister, PID: 9371
03-17 13:42:20.376: E/AndroidRuntime(9371): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-17 13:42:20.376: E/AndroidRuntime(9371): at android.os.Handler.<init>(Handler.java:200)
03-17 13:42:20.376: E/AndroidRuntime(9371): at android.os.Handler.<init>(Handler.java:114)
03-17 13:42:20.376: E/AndroidRuntime(9371): at android.app.Dialog.<init>(Dialog.java:119)
03-17 13:42:20.376: E/AndroidRuntime(9371): at android.app.AlertDialog.<init>(AlertDialog.java:200)
03-17 13:42:20.376: E/AndroidRuntime(9371): at android.app.AlertDialog$Builder.create(AlertDialog.java:1086)
03-17 13:42:20.376: E/AndroidRuntime(9371): at android.app.AlertDialog$Builder.show(AlertDialog.java:1111)
03-17 13:42:20.376: E/AndroidRuntime(9371): at com.zbq.mobilehospitalregister.activity.SplashActivity.showUpdateDialog(SplashActivity.java:229)
03-17 13:42:20.376: E/AndroidRuntime(9371): at com.zbq.mobilehospitalregister.activity.SplashActivity$1.handleMessage(SplashActivity.java:64)
03-17 13:42:20.376: E/AndroidRuntime(9371): at com.zbq.mobilehospitalregister.activity.SplashActivity$2.run(SplashActivity.java:186)
03-17 13:42:20.376: E/AndroidRuntime(9371): at java.lang.Thread.run(Thread.java:818)
03-17 13:42:20.734: E/Surface(9371): getSlotFromBufferLocked: unknown buffer: 0xa2b295b0
03-17 13:42:24.608: I/Process(9371): Sending signal. PID: 9371 SIG: 9
private void checkVersion() {
// 网络请求在子线程中进行
new Thread(new Runnable() {
@Override
public void run() {
// 发送消息给主线程
Message obtain = Message.obtain();
long startTime = System.currentTimeMillis();
try {
URL url = new URL("http://192.168.99.136:8080/update.json");
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setConnectTimeout(1500);// 请求超时
connection.setReadTimeout(1500);// 读取超时
// 相应码
if (200 == connection.getResponseCode()) {
// 获取数据流
InputStream inputStream = connection.getInputStream();
// 流转换成字符串
String json = StreamUtil.stream2String(inputStream);
// 解析json
JSONObject jsonObject = new JSONObject(json);
String versionName = jsonObject
.getString("versionName");
String versionCode = jsonObject
.getString("versionCode");
mVersionDescribe = jsonObject
.getString("versionDescribe");
mDownloadUrl = jsonObject.getString("downloadUrl");
// 对比版本号
if (mLocalVersionCode < Integer.parseInt(versionCode)) {
// 提示更新
obtain.what = UPDATE_VERSION;
} else {
// 直接进入主页面
obtain.what = ENTER_HOME;
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
LogUtil.i(tag, "url异常");
obtain.what = ENTER_HOME;
} catch (IOException e) {
e.printStackTrace();
LogUtil.i(tag, "io异常");
obtain.what = ENTER_HOME;
} catch (JSONException e) {
e.printStackTrace();
LogUtil.i(tag, "json异常");
obtain.what = ENTER_HOME;
} finally {
long endTime = System.currentTimeMillis();
// 指定睡眠时间,请求网络时长超过3秒则不做处理
if ((endTime - startTime) < 3000) {
try {
// 睡满3秒
Thread.sleep(3000 - (endTime - startTime));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
mHandler.handleMessage(obtain);
}
}
}).start();
}
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case UPDATE_VERSION:
// 弹出询问更新对话框
showUpdateDialog();
break;
case ENTER_HOME:
// 直接进入
enterHome();
break;
default:
break;
}
};
};
protected void showUpdateDialog() {
Builder builder = new AlertDialog.Builder(this);
// 对话框左上角图标
builder.setIcon(R.drawable.ic_launcher);
// 标题
builder.setTitle("版本更新");
// 内容
builder.setMessage(mVersionDescribe);
// 积极按钮
builder.setPositiveButton("立即更新", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 点击事件,下载apk
downloadApk();
}
});
// 消极按钮
builder.setNegativeButton("稍后再说", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 关闭对话框,进入主界面
enterHome();
dialog.dismiss();
}
});
//如果两个按钮都不点击,而点击后退
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// 关闭对话框,进入主界面
enterHome();
dialog.dismiss();
}
});
builder.show();
}