android开发关于targetSdkVersion

1.targetSdkVersion版本问题:


出错点:<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

这种情况下的配置httpurlconnection部分会报错,然后将android:targetSdkVersion改成4可以正常运行

使用环境是在文件下载中,

问题解决:

在4.2环境下载必须要开个子线程,把下载功能的代码放到子线程去运行就行了.因为自4.0版本以后都启用了strick mode,这种模式是为了让大家编写出来的程序更规范而设立的.一切下载功能必须在子线程内完成.


另外自己有点小心得与大家分享:部分童鞋说marsl老师的源码之恩给你在SDK版本10以下运行,这是SDK版本不兼容造成的,可以采用StrictMode模式注明以解决SDK版本不兼容的问题并下载歌词文本文件和下载MP3文件分别放在AsyncTask中执行,并在按键的监听器中调用AsyncTask子类的的execute(Params...)方法,StrictMode模式和AsyncTask的使用方法可参阅相应的API文档。同时也遇到了下载MP3文件时无法得到输入流的问题,原因是虚拟机并没有外部SDCARD,


有人说下载下来的MP3文件有时候文件大小不对,还有声音会卡
关键点:根据chen老师的视频此处每次读取4*1024个字符,但是不同环境下这些字符不一定读满,既:byte buffer[] = new byte [4*1024];参数中 buffer可能只有其中一部分有MP3的数据剩下一部分是空的(这就是声音卡的原因),既然有的时候read不满所以read的次数就会变多,但是buffer的大小是固定的,所以文件就会变大。
大家可以修改一下代码做个测试
int times = 0;
while( fileStream.read(buffer) != -1){
        outputStream.write(buffer);
        times = times + 1;
}
System.out.println(times);

修改后代码查看运行了多少次,最多的一次我发现是999,比较少的一次应该是670多点。
解决方案:这里要多谢kuboy 童鞋(http://www.marschen.com/bbs/foru ... 05&highlight=18
有一篇文章说的很好,他修改了部分代码,这样就可以避免以上的情况出现了,代码如下:
int length = 0;
while((length = fileStream.read(buffer)) != -1){
        outputStream.write(buffer , 0 ,length);
}
向fileStream中读了多少数据,那就向outputStream中写多少数据,因为每次都这样控制着,所以不会出现文件大小不对的情况了。再次谢谢kuboy 童鞋。

上面的问题是引用别人的博文,觉得楼主分析能力好强大,威武霸气~



感觉好霸气吖,呜呜,还是菜鸟,comeon~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值