Android开发问题集锦

转载自这个文章:点击打开链接

问题一:Android Zip解压缩类处理中文名乱码
答:目前Android平台上的底层库仍然有很多不完善的地方比如zlib库处理Zip文件时无法对中文文件名做正确的处理,同时无法类似J2SE那样 的android.util.zip类没有setEncoding方法处理。目前解决方法是引入apache的ant库来实现解压缩,同时apache ant库好包含了完整的xml dom4j解析库可以实现document的保存。
当然引入apache ant库的问题是造成程序编译后体积变得臃肿,算法因为是java写的效率上会大打折扣,但是解决下问题还是可以的,重量级处理还是放到服务器上比较好。
目前总体来看Android平台底层库很多地方做的不近人如意,很多关键地方都出现了问题。
问题二:layout_weight的作用是什么?
答:很多时候大家可能发现布局xml文件中有一个layout_weight属性,不是layout_height也不是layout_width,那么 layout_weight是什么呢? 它的定义是一个比重。比如在一个LinearLayout中,有三个TextView控件,如果第一个设置layout_height为1,第二个为1,最后一个为2,这时候这三个TextView控件的大小为 1:1:2 。在Android开发中我们可能经常用到这个属性来排列一些控件。
问题三:No marked region found along edge错误
答:如果在Android项目中使用Nine Patch资源,时候可能出现比如ERROR: 9-patch image eoeAndroid .9.png malformed.或 No marked region found along edge.以及 Found along top edge.的错误主要是因为该图片没有四周的定位像素。
问题四:ListView在ScrollView中无法正常显示
答:对于ListView放在在ScrollView中时,目前Android平台仍然有些bug,状态是显示的ListView仅仅大约一行半(总Item 肯定大于2行,比如10行),通过Layout布局属性设置目前仍然无法修正。通过分析ListView和ScrollView构造没有发现很好的解决方法,目前可以通过自己实现ListView来解决,Tony解决的方式是重写ListView的onMeasure重新计算显示行数。希望在 Android以后的版本,至少2.1以后能够改进。
问题五:Android方法中的synchronized是什么意思?
答: 很多朋友可能看到部分Android方法中出现了synchronized字样,比如public static synchronized String getHttpResponse(String url) ,其实这个问题属于Java基础和Android无关,使用关键字 synchronized 字面表示同步,而实际中在多线程程序里
为了防止结果出现意外(会出什么意外呢?Tony举例比如一个线程正在写文件,还没有写完,但是另一个线程就开始读取了),加入synchronized可以为该方法上锁,即只有一个线程单独访问该方法,类似Win32中的临界区Critical Section是一个道理。不过要提示大家该方法不要滥用,在线程安全的场合下使用会增加系统开销影响性能。而有些时候还会在方法中出现 synchronized(this) 字样,不错 synchronized(this) 一般用于锁住某个循环中的内容,在iPhone Cocoa中也同样适用。
问题六:layout_toRight错误解决方法
答:有朋友询问在导入一些老版本的Android项目时出现了layout_toRight 的错误提示,具体的如No resource identifier found for attribute 'layout_toRight' in package 'android',其实在Android 1.1开始SDK做了小幅的改变,比如android:id均换为android:name,这里layout_toRight换成 layout_toRightOf即可。有些情况ADT还可能帮助我们修正问题,Tony提示直接在错误的地方单击鼠标右键,选择Quick Fix不妨看看。
问题七:Resource is out of sync with错误
答:很多网友抱怨Android的Eclipse很差劲,经常出现一堆莫名其妙的错误,Resource is out of sync with the file system错误如何解决呢? 这主要是由于资源文件被Eclipse之外的编辑器打开了,为了保证刚才保存的东西不受冲突,IDE自己保护了,解决的方法最笨的就是关掉Eclipse 再开,提示资源保存时单击No,或者直接按F5键,如果程序时自动编译的清空下项目会重新生成。的确从多年前的Symbian时代开始Carbide C++(基于Eclipse)就从来没有给开发者带来过效率,相比开发iPhone的xCode或者Windows Mobile的Visual Studio来说Eclipse这个Java开发的东西实在不敢恭维啊,假死和糟糕的用户体验实在让人难忘。
问题八:Adapter中notifyDataSetChanged的作用
答:对于Android开发来说处理一些界面需要和Adapter适配器打交道,虽然Android自带了一些比如ArrayAdapter但是大多数情况下无法满足我们需要,所以就要从BaseAdapter派生一个类满足我们特殊的需要。
首先我们可能重写getView(),通过LayoutInflater的inflate方法映射一个自己定义的Layout布局xml加载或从xxxView中创建。这些大家可能滚瓜烂熟了但是仍然很多Android开发者对于BaseAdapter中notifyDataSetChanged()方法不是很理解,notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。
问题九: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()方法,当然主要看你代码的具体情况。
问题十: 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运算才实现加密。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值