targetSdkVersion 相关了解

来源:互联网 发布:ubuntu防火墙关闭 编辑:程序博客网 时间:2024/04/30 03:46

targetSdkVersion 有什么作用?

如果当前手机版本与 设置的版本一致,那么兼容性判断 检查 就不需要了,效率上可能会更高点。

设置之后会应用一些版本特性在手机应用中。表现在 一些行为或者样式上。比如targetSdkVersion 高于11的时候默认样式 Holo 就是替代原先的样式。


这边先说一下 我遇到的 两个坑....


1 targetSdkVersioin = 17  minSdkVersion =10  这个时候  

addJavaScriptInterface(obj ,params) 方法  如果没有加 @JavascriptInterface  会报错 MethodNotFoundException ,但是如果没有加targetSdkVersion 是不会有问题的,但是同时也会存在安全漏洞。


2 targetSdkVersioin = 18 minSdkVersion = 10 这个时候AsyncTask 表现特别奇怪。

当执行execute() 之后  doInbackground()方法完全不执行  只有 onPreExecute() 方法执行了

后来查阅得知:

android 1.6 到 android 2.3 时 asyncTask 为了提高效率 把 顺序执行 修改成并发执行。

但是在 android 3.0 的时候 并发执行又修改成顺序执行, 同时增加了一个方法 executeOnExecutor(Executor) 用于并行运行异步任务。


注意 当我们没有设置targetSdkVersioin 的时候 targetSdkVersion 其实是 minSdkVersion。


如果targetSdkVersion 设置低于13 那么 execute() j就是并行的  如果高于13 那么就是 顺序执行异步任务。

所以为了能够立即执行任务 我们可以:

AsyncTask as ....;

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR)  {

as.execute();

} else {

as.executeOnExecutor(AsycTask.THREAD_POOL_EXECUTOR);

}

下一篇  总结一下 比较重要的注意点




0 0
原创粉丝点击