1、北京传智播客教育 北京传智播客教育 向Internet发送xml数据 利用HttpURLConnection对象 我们可以向网络发送xml数据 StringBuilderxml newStringBuilder xml append xml append xml append 中国 xml append byte xmlbyte xml toString getBytes UTF 8 URLurl newURL http localhost 8080 itcast contanctmanage do method readxml HttpURLConnectionconn HttpURLCon
2、nection url openConnection conn setConnectTimeout 5 1000 conn setDoOutput true 允许输出conn setUseCaches false 不使用Cacheconn setRequestMethod POST conn setRequestProperty Connection Keep Alive 维持长连接conn setRequestProperty Charset UTF 8 conn setRequestProperty Content Length String valueOf xmlbyte length
3、conn setRequestProperty Content Type text xml charset UTF 8 DataOutputStreamoutStream newDataOutputStream conn getOutputStream outStream write xmlbyte 发送xml数据outStream flush if conn getResponseCode 200 thrownewRuntimeException 请求url失败 InputStreamis conn getInputStream 获取返回数据Stringresult readAsString
4、 is UTF 8 outStream close 北京传智播客教育 北京传智播客教育 多线程断点续传下载 使用多线程下载文件可以更快完成文件的下载 多线程下载文件之所以快 是因为其抢占的服务器资源多 如 假设服务器同时最多服务100个用户 在服务器中一条线程对应一个用户 100条线程在计算机中并非并发执行 而是由CPU划分时间片轮流执行 如果A应用使用了99条线程下载文件 那么相当于占用了99个用户的资源 假设一秒内CPU分配给每条线程的平均执行时间是10ms A应用在服务器中一秒内就得到了990ms的执行时间 而其他应用在一秒内只有10ms的执行时间 就如同一个水龙头 每秒出水量相等的情况
5、下 放990毫秒的水肯定比放10毫秒的水要多 多线程下载的实现过程 1 首先得到下载文件的长度 然后设置本地文件的长度 HttpURLConnection getContentLength RandomAccessFilefile newRandomAccessFile QQWubiSetup exe rwd file setLength filesize 设置本地文件的长度2 根据文件长度和线程数计算每条线程下载的数据长度和下载位置 如 文件的长度为6M 线程数为3 那么 每条线程下载的数据长度为2M 每条线程开始下载的位置如上图所示 3 使用Http的Range头字段指定每条线程从文件的什
6、么位置开始下载 下载到什么位置为止 如 指定从文件的2M位置开始下载 下载到位置 4M 1byte 为止 代码如下 HttpURLConnection setRequestProperty Range bytes 2097152 4194303 4 保存文件 使用RandomAccessFile类指定每条线程从本地文件的什么位置开始写入数据 RandomAccessFilethreadfile newRandomAccessFile QQWubiSetup exe rwd threadfile seek 2097152 从文件的什么位置开始写入数据 北京传智播客教育 北京传智播客教育 为应用添
7、加新的Activity 第一步 新建一个继承Activity的类 如 NewActivitypublicclassNewActivityextendsActivity OverrideprotectedvoidonCreate BundlesavedInstanceState super onCreate savedInstanceState 这里可以使用setContentView R layout xxx 显示某个视图 第二步 需要在功能清单AndroidManifest xml文件中添加进上面Activity配置代码 红色部分 android name属性值的前面加了一个点表示NewAc
8、tivity是当前包cn itcast action下的类 如果类在应用的当前包下 可以省略点符号 如果类在应用的子包下必须加点 如 NewActivity类在cn itcast action user包下可以这样写 北京传智播客教育 北京传智播客教育 打开新的Activity 不传递参数 在一个Activity中可以使用系统提供的startActivity Intentintent 方法打开新的Activity 在打开新的Activity前 你可以决定是否为新的Activity传递参数 第一种 打开新的Activity 不传递参数publicclassMainActivityextendsA
9、ctivity OverrideprotectedvoidonCreate BundlesavedInstanceState Buttonbutton Button this findViewById R id button button setOnClickListener newView OnClickListener 点击该按钮会打开一个新的ActivitypublicvoidonClick Viewv 新建一个显式意图 第一个参数为当前Activity类对象 第二个参数为你要打开的Activity类startActivity newIntent MainActivity this NewActivity class http www anzhuo cc 安卓手机论坛