Android 开发中常会遇到些什么问题

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.的错误主要是因为该图片没有四周的定位像素。

问题二:layout_weight的作用是什么?

答:很多时候大家可能发现布局xml文件中有一个layout_weight属性,不是layout_height也不是layout_width,那么 layout_weight是什么呢? 它的定义是一个比重。比如在一个LinearLayout中,有三个TextView控件,如果第一个设置layout_height为1,第二个为1,最后一个为2,这时候这三个TextView控件的大小为 1:1:2 。在Android开发中我们可能经常用到这个属性来排列一些控件。

问题三:Android Zip解压缩类处理中文名乱码

答:目前Android平台上的底层库仍然有很多不完善的地方比如zlib库处理Zip文件时无法对中文文件名做正确的处理,同时无法类似J2SE那样 的android.util.zip类没有setEncoding方法处理。目前解决方法是引入apache的ant库来实现解压缩,同时apache ant库好包含了完整的xml dom4j解析库可以实现document的保存。

当然引入apache ant库的问题是造成程序编译后体积变得臃肿,算法因为是java写的效率上会大打折扣,但是解决下问题还是可以的,重量级处理还是放到服务器上比较好。

目前总体来看Android平台底层库很多地方做的不近人如意,很多关键地方都出现了问题。

问题四: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不妨看看。

问题五: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中也同样适用。

问题六:ListView在ScrollView中无法正常显示

答:对于ListView放在在ScrollView中时,目前Android平台仍然有些bug,状态是显示的ListView仅仅大约一行半(总Item 肯定大于2行,比如10行),通过Layout布局属性设置目前仍然无法修正。通过分析ListView和ScrollView构造没有发现很好的解决方法,目前可以通过自己实现ListView来解决,Tony解决的方式是重写ListView的onMeasure重新计算显示行数。希望在 Android以后的版本,至少2.1以后能够改进。

问题七: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的notifyDataSetChanged()方法,当然主要看你代码的具体情况。

2.改变适配器Adapter内容时不要在后台线程中,必须在UI线程中处理,这点可以通过Handler传出来解决。

问题八:Adapter中notifyDataSetChanged的作用

答:对于Android开发来说处理一些界面需要和Adapter适配器打交道,虽然Android自带了一些比如ArrayAdapter但是大多数情况下无法满足我们需要,所以就要从BaseAdapter派生一个类满足我们特殊的需要。

首先我们可能重写getView(),通过LayoutInflater的inflate方法映射一个自己定义的Layout布局xml加载或从xxxView中创建。这些大家可能滚瓜烂熟了但是仍然很多Android开发者对于BaseAdapter中notifyDataSetChanged()方法不是很理解,notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。

问题九: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开发的东西实在不敢恭维啊,假死和糟糕的用户体验实在让人难忘。

文章整理自长沙软件培训http://www.cshope.net/

Android 开发中常会遇到些什么问题,布布扣,bubuko.com

时间: 2024-12-05 08:21:23

Android 开发中常会遇到些什么问题的相关文章

Windows系统下Android开发环境搭建

“工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.eclipse的安装 3.Android SDK 的安装 4.Android ADT插件的安装 ---------------------------------------------------------------------------------------------------------

Android学习笔记_78_ Android开发中使用软引用和弱引用防止内存溢出

在<Effective Java 2nd Edition>中,第6条"消除过期的对象引用"提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池.缓存中的过期对象都有可能引发内存泄露的问题.书中还提到可以用 WeakHashMap来作为缓存的容器可以有效解决这一问题.之前也确实遇到过类似问题,但是没有接触过"弱引用"相关的问题,于是查阅了一些资料. <Java 理论与实践: 用弱引用堵住内存泄漏>

Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建

一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试.    笔者没有怎么使用过Eclipse做Android学习,但是基于Android Studio类似于VS的项目架构,还是偏爱Android Studio这个IDE,没

转发:Android开发?用C#!!

转发自 最近偶然在QQ技术群里见到有人提起用C#开发Android,当时我感觉到很诧异:Android不是只能用Java开发吗?何时可以使用C#了?那个群友便告知我:mono. 百度一下吧!搜到了mono的官方网站:http://xamarin.com/(英文网站,看这个够头大的了) 根据我仅有的点英语知识,好得看懂了些:   Mono是用C#和.Net在VS环境下开发多个平台手机应用程序.意思就是说通过Mono,可以开发多个平台的手机应用程序(即iOS和Android).听起来好像不错,但它是

Android开发第一天

今天做了两件事,一是开通了博客,准备在大学即将结束的时候开始做点正经事:二是搭建好了android的开发环境,并且终于在自己的手机上调试成功了第一个“helloworld”. 第一件事,准备写博客,自己觉着应该算是一件不错的事情.看过很多人写博客,但看的杂文累较多,纯技术性文章读的少之又少.当年韩寒的“韩三篇”写出来的时候没能及时读到,已经错过了新浪博客辉煌年代的光景.现在愿意写杂文的博主已经少的可怜了,但是一些像csdn等的技术分享型的论坛博客等,虽然热度也有缩减,但作为一个即将工作的程序猿来

【Android开发】完美解决Android完全退出程序

背景:假说有两个Activity, Activity1和Activity2, 1跳转到2,如果要在2退出程序,一般网上比较常见的说法是用 System.exit(0) 或是 android.os.Process.killProcess(android.os.Process.myPid()) 但实际应用中,并不是能够真正退出,问题出在?1跳转到2时,如果Activity1你finish掉了,两么是可以退出程序的,但有时1跳转到2时,我们不能将Activity1 finish掉,那么在Activit

对比Windows Phone与iOS、Android开发的不同[转]

Windows Phone是微软公司在2010年发布的智能手机操作系统,目前最新版本是Windows Phone 8.0,在市面上能见到的是Windows Phone 7.5(Mango和Tango),下面,从开发者角度,分几个方面对比他们的不同. 一.硬件 iOS与Windows Phone系统都为闭源操作系统,而且对于硬件解决方案,微软和苹果都有苛刻的要求,苹果自己设计CPU,然后找代工厂商生产,而且通信芯片也是非高通不用,这也是中国移动一直无法引入苹果定制机的一个重要原因. 在微软方面,微

搭建Android开发环境读书心得

搭建Android开发环境主要包括五部分的知识,首先需要知道Android底层开发需要哪些工具,安装JDK,搭建Android应用程序开发环境,安装Android NDK开发环境和安装交叉编译环境. 开发.测试和调试Linux驱动.HAL程序库需要使用JDK6或以上版本.eclipse3.4或以上版本.ADT.CDT.Android SDK.Android NDK.交叉编译环境.Linux内核源代码.Android源代码以及用于调试开发板的串口工具:minicom. 在Ubuntu Linux中

Android开发:AsyncTask源代码完全解析

从事Java开发以来,接触过很多的开源代码,自己能够明白代码但是想要表达出来却有点困难,从今天开始,逐渐开始对一些开源代码进行解析并记录成blog分享出来,希望以此提升自己的表达能力,如果文章中有什么出错之处,欢迎读者在评论中指出方便我及时的修正,以免误导其他读者,如果你有什么更好的建议也欢迎在下方留下你的评论,本人不胜荣幸.转载此文的朋友请带上原文的链接:http://blog.csdn.net/d_clock/article/details/43805779好,扯淡的话到此为止,接下来进入正