时间:2021-05-19
一、Splash界面的作用
用来展现产品的Logo
应用程序初始化的操作
检查应用程序的版本
检查当前应用程序是否合法注册
二、界面的xml定义
写一个布局背景设置为产品的logo图片,再添加一个textview显示版本号。
三、动态获取版本号的方法
四、链接服务器获取更新信息
升级提醒的对话框
在子线程中请求服务器的代码 checkup()方法
private void checkup() { new Thread() { public void run() { Message msg = Message.obtain(); long startTime = System.currentTimeMillis();//启动该线程的系统时间 try { //请求网络的代码 URL url = new URL(getString(R.string.serverurl)); HttpURLConnection conn = (HttpURLConnection) url .openConnection(); conn.setRequestMethod("GET");//请求方法 conn.setConnectTimeout(4000);//超时时间 int code = conn.getResponseCode();//返回码200请求成功 if (code == 200) { InputStream is = conn.getInputStream(); String result = StreamTools.readFromStream(is); Log.i(TAG, "联网成功" + result); JSONObject obj = new JSONObject(result);//解析json字符串 String version = (String) obj.get("version");//版本信息 description = (String) obj.get("description");//描述信息 apkurl = (String) obj.get("apkurl"); if (getAppVersion().equals(version)) { msg.what = ENTER_HOME; } else { msg.what = SHOW_UPDATE_DIALOG; } } } catch (MalformedURLException e) { e.printStackTrace(); msg.what = URL_ERROR; } catch (IOException e) { e.printStackTrace(); msg.what = NETWORK_ERROR; } catch (JSONException e) { e.printStackTrace(); msg.what = JSON_ERROR; } finally { handler.sendMessage(msg); long endTime = System.currentTimeMillis();//该线程执行完毕的时间 long dTime = endTime-startTime;//该线程的阻塞时间 if (dTime<3000) { try { Thread.sleep(3000-dTime);//若该线程的阻塞时间小于三秒继续睡眠到三秒 } catch (InterruptedException e) { e.printStackTrace(); } } } } }.start(); }handler private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case SHOW_UPDATE_DIALOG: showUpdateDialog(); break; case ENTER_HOME: Toast.makeText(getApplicationContext(), "", 0).show(); enterhome(); break; case URL_ERROR: Toast.makeText(getApplicationContext(), "URL_ERROR", 0).show(); enterhome(); break; case NETWORK_ERROR: Toast.makeText(getApplicationContext(), "NETWORK_ERROR", 0).show(); enterhome(); break; case JSON_ERROR: Toast.makeText(getApplicationContext(), "JSON_ERROR", 0).show(); enterhome(); break; } }};五、下载文件(使用Afinal框架)并调用系统安装工具安装APK
其他:
1、显示4.0的样式:方式是去掉功能清单里的Activity对应的android:theme;
放到application里面;
2、当splash页面弹出升级提示框过滤点击返回的是两种方式:
builder.setCancelable(false);
设置setOnCancelListener 当触屏的时候直接进入主页面
对话框是挂载在Activity上面的,如果Activity不存在,对话框就不能被创建。
getApplicationContext();生命周期长,只要应用还存活它就存在;this 生命周期短,只要Activity不存在了,系统就会回收
其中:getBaseContext(),getApplication(),getApplicationContext(); 都不能放在AlertDialog做上下文;
3.Splash用来宣传和隐藏程序启动细节是很有用的。
用Handler的实现方法如下:(也可以用线程实现,不推荐)
定义一个Activity,用来显示你的图片,其中最重要的就是定义一个Handler,用来发送和接收消息:
在onCreate()方法中,用handler发送消息,延迟3000毫秒:
把你的图片放到布局文件中作背景即可。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android简单启动画面实现方法。分享给大家供大家参考,具体如下:每个Android应用程序启动之后都会出现一个Splash启动界面,显示产品L
最近又开始学习Androidstudio了,在制作APP时,都有一个启动的界面,看上去美观且实用(也可以作为以后的广告位←那怎样制作呢?第一步:新建Splash
Android隐藏标题栏及解决启动闪过标题的实例详解方法一:在代码中设置this.requestWindowFeature(Window.FEATURE_NO_
Android启动另一个App/apk中的Activity实现代码前言:Android提供了在一个App中启动另一个App中的Activity的能力,这使我们的
本文实例讲述了Android编程实现启动另外的APP及传递参数的方法。分享给大家供大家参考,具体如下:有时候需要从一个APP中启动另外一个APP,比如Twitt