安卓开发问题集锦三

问题一、Android中XML布局文件@+id/和@id/的区别

    这里@我们可以理解为引用,而多出的+代表自己新声明的。

问题二、Drawable、Bitmap、Canvas 和 Paint是什么关系
    其实他们除了Drawable外早在Sun的J2ME中就已经出现了,但是在 Android 平台中Bitmap、Canvas 相关的都有所变化。首先让我们理解下 Android 平台中的显示类是 View,但是还提供了底层图形类 android.graphics,今天所说的这些均为graphics底层图形接口。Bitmap称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。Drawable作为Android平台下通用的图形对象,可以装载常用格式的图像,比如GIFPNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。Canvas名为画布,我们可以看作是一种处理过程,使用各种方法来管理 Bitmap、GL 或者 Path 路径,同时它可以配合 Matrix 矩阵类给图像做旋转、缩放等操作,同时Canvas 类还提供了裁剪、选取等操作。Paint - 我们可以把它看做一个画图工具,比如画笔、画刷。他管理了每个画图工具的字体、颜色、样式。如果涉及一些 Android 游戏开发、显示特效可以通过这些底层图形类来高效实现自己的应用。

问题三、 Adapter 中notifyDataSetChanged 作用

    对于Android开发来说处理一些界面需要和Adapter适配器打交道,虽然Android自带了一些比如ArrayAdapter但是大多数情况下无法满足我们需要,所以就要从BaseAdapter 派生一个类满足我们特殊的需要。首先我们可能重写getView(),通过LayoutInflater的inflate方法映射一个自己定义的Layout布局xml加载或从xxxView中创建这些大家可能滚瓜烂熟了但是仍然很多Android开发者对于BaseAdapter中notifyDataSetChanged()方法不是很理解,该方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item 的内容。

问题四、 APK 文件为什么要签名才能发布
    很多开发人员不明白APK文件为什么必须签名才能发布,其实签名并非从Android平台开始,在过去从Symbian OS就开始需要签名才能发布,这样可以保证每个应用程序开发商合法ID,由于Android平台没有UID3的限制,部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序。不过目前比较好的是Android中所有的permission 使用都是免费的,但从目前GIT项目中出现的CertInstaller.git包不知道是不是和证书有关,而近几年Symbian OS从 v9.0开始如果应用程序涉及敏感操作需要Capability才能使其真机顺利安装,同时部分高级权限需要购买和Symbian Signed测试才能发布,保证系统的安全可靠性,而这点Android平台较为宽松。常规情况下从ADB 比如Eclipse的ADT插件安装到模拟器或真机的测试程序经过DEBUG标记签名,所以签名都需要先创建 key公钥通过RSA运算才实现加密。

问题五、Android ADT 插件很不稳定DDMS总是死
    很多 Android 开发人员都有一个感受就是通过 Eclipse 配合 Android ADT 插件开发经常遇到DDMS 失去和模拟器的连接,整体感据感觉很不稳定,有时甚至 Logcat 无法捕获到调试信息,其实这都是因为 Eclipse 构建于Java平台造成的,其实这类问题同样困扰着 Symbian的 Carbide. C++它也同样使用了开源工程 Eclipse,JRE 的稳定性当然不能和微软纯 NativeC++的 Visual Studio 相提并论稳定性,所以总结出来的临时解决方法就是使用“进程管理工具结束掉 adb.exe 进程,重新启动 Eclipse 才能保证 Logcat 正常捕获信息”。

问题六 、adb visersion failed 解决方法是什么
    有时在启动 Eclipse 时提示 adb visersion failed 错误,除了这个错误还可能有 Failed to get the adb visersion。Cannot run program \tools\adb.exe 等问题。通过分析这些问题主要是 SDK Location 路径设置错误引起的,部分的是由于下载安装了新版的 ADT 工具,但是又将 Eclipse 指向了老版本的 Android SDK 造成的。
问题七、什么是APK 格式文件
    提起 Android 软件安装程序 APK 格式文件不得不想起 Symbian 的 sis 文件,它们的道理都是一样的,压缩打包编译后的文件,其实就是zip文件经过改名得来的,我们通过WinHex、UltraEdit 这类的 16 进制编辑器查看文件头就清楚了。APK 是 Android Package 的全称,我们用 WinRAR 解开它可以看见 dex、androidmanifest.xml 文件当然这都是编译后的二进制文件,即使是这个 xml 文件和源代码的也是不一样的。

问题八、 The content of the adapter has changed  解决方法
    新手在 Android 开发时可能对 Thread 和 Message 以及 Handler、Looper 概念不是很清楚,可能产生类似 The content of the adapter has changed but ListView did not receive a notification make sure the content of your adapter is not modified from a background thread . but only from the UI thread.的错误。这种问题,解决方法必须要详细的代码,不过给出以下几点可以帮助你了解该问题:
1.改变适配器 Adapter 内容时不要在后台线程中,必须在 UI 线程中处理,这点可以通过Handler 传出来解决。
2.尝试 Adapter 的 notifyDataSetChanged()方法,当然主要看你代码的具体情况。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值