您的位置:首页 > 移动开发 > Android开发

不可不知的android开发冷知识6

2016-11-09 21:41 204 查看
1、AsyncTask是获得后台线程的最简单方式,但它基本上不适用于重复且长时间运行的任务,比如后台下载的图片如果过大,推荐用HandlerThread代替,原因是自Android3.2版本开始,AsyncTask不再为每一个AsyncTask实例单独创建一个线程。而是使用一个Executor在单一的后台线程上运行所有AsyncTask的后台任务。这意味着每个AsyncTask都需要排除逐个运行,显然,长时间运行的AsyncTask会阻塞其他AsyncTask。

2、在调用系统相机拍照片时,如果指定了照片的输出路径,则在onActivityResult中只会返回requestCode和resultCode,intent中的data是null.

3、Android路径path转换为Uri:Uri uri = Uri.fromFile(new File(path)).

4、获取Android运行时最大内存限制:

ActivityManager manager = (ActivityManager)getSystemService(
Context.ACTIVITY_SERVICE);
int maxMenory = manager.getMemoryClass();


不同的机器设备可能返回的运行内存大小会不一样,一般是16M,有些会24M或更大,因此应用需要内存比较大时,需要判断一下。

5、Eclipse中导入别人工程时常会出现“unable to resolve target android-XX”或者满屏的错误而却又提示不出哪里错误的问题,这是因为android编译环境不对应导致的。解决的方法是在当前环境下随便新建一个工程,查看工程的project.properties或default.properties文件,找到target=android-xx。然后将此版本的target=android-xx替换到出错工程的project.properties的target-xx中即可。

6、获取某段音频的长度可以用以下两句代码:

MediaPlayer mp = MediaPlayer.create(context,Uri.parse(path));
int duration = mp.getDuration();


7、Eclipse中常常需要查看某个变量在哪里使用,这里有个简便的方法让需要查看的变量高亮显示。打开Eclipse中的Windows->preferences->java->Editor->MarkOccurences。设置后只需要双击某个变量,那么所有有该变量的地方就会和其他变量区分开来。

8、打开系统图片框时使用intent = new Intent(Intent.Action_GET_CONTENT)打开时,在有的设备上会发现在onActivityResult中的intent返回的路径获取不到图片。这是因为设备上的系统版本不一样造成的。解决的方法是在代码中添加版本判断:

if(Build.VERSION.SDK_INT < 19){
intent = new Intent(Intent.ACTION_GET_CONTENT);
}else{
intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore
.Images.Media.EXTERNAL_CONTENT_URI);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息