Android 开发常见问题汇总

xiaoxiao2025-09-05  222

Dex分包,解决64K限制的问题:

参考链接:https://developer.android.com/studio/build/multidex.html#mdex-gradle

问题1:Android项目中的命名规则 举例如下: Activity:             TemplateActivity Activity布局文件:      activity_模块名_template Activity布局文件Id定义:template_listView(组件类型)[_history] Adapter:              TemplateAdapter Adapter布局文件:       模块名_template_item Adapter布局文件中Id定义:template_item_tv(组件类型)_title String|dimen|style:  模块名_template_title(文字内容表达意思)    []:可选; ():解释 1 2 3 4 5 6 7 8 9 问题2: 使用场景:     获取设备信息,键值对形式,然后进行Base64传递到Server。     例如:osv=6.0&screenpix=1920x1080&IP=::1%1 遇到问题:        获取到的IP含有:等非字符和数字的内容,传递到Server进行Base64解码就会出现错误。 解决办法:     对获取到的设备信息进行encode,即对value URLEncoder.encode(value.toLowerCase(), "utf-8");     key不进行处理。 补充:     有时候获取到的Base64数据不完整,也会报错。 1 2 3 4 5 6 7 8 9 10 问题3: #报错: Error:(23, 12) This support library should not use a lower version (19) than the targetSdkVersion (20) 1 #解决办法: Change compile 'com.android.support:appcompat-v7:19.+' to compile 'com.android.support:appcompat-v7:20+' 1 2 3 4 问题4: 登陆页面 输入时账号时 弹出键盘覆盖 密码输入框 期望:输入能够把输入页面顶上去。 解决方法:Activity设置成非全屏且:android:windowSoftInputMode = "adjustResize"  1 2 问题5 :点击EditText输入两次才弹出DatePickerDialog。 期望:点击一次弹出DatePickerDialog 解决方法:EditText改为TextView即可。 1 2 问题6:The content of the adapter has changed but ListView did not receive a notification 期望:不出现该bug  思路:   在Android开发过程中,使用了大量的ListView,发现这个错误偶尔会出现。特别是做压力测试的时候,不停的点击刷新,更容易出现这个错误。代码中已经使用了Adapter的notifyDataSetChanged()方法通知UI更新了,但是还是会出现这个错误。究其根本原因,还是线程之间同步的问题。比如,线程1更新了Adapter中的内容,却还没有来得及通知内容已经更新,就又有线程2更新了Adapter中的内容,这个时候如果线程1再通知内容更新,就会出现上述异常了。

在此提出一些解决办法: 对线程进行管理,如果当前Actitivty暂停了,及时停止这些线程。 数据更新后,要及时使用notifyDataSetChanged()方法通知UI,避免出现数据不一致的情况。 数据的更新,最好放在主线程中进行。这样可以使用同步数据更新与通知内容更新部分的代码。

最后补充一条我最终解决问题的方法: 在用到多线程的时候,可以对数据做缓存处理, 比如与ListView绑定的数据存储在ArrayList (dataList), 在线程中先将数据加入到临时ArrayList(tmpList) , 最后在调用notifyDataSetChanged()方法通知UI更新之前, 把临时ArrayList(tmpList)中的数据更新到ArrayList(dataList)中, 然后清空临时ArrayList(tmpList)数据。 1 2 3 4 5 6 7 8 9 10 参考:http://blog.csdn.net/garybook/article/details/7498342

问题7:内存泄露 思路:使用Memory Analyzer Tool(MAT)内存分析工具进行分析。 1 问题8 Jpush推送相关问题: 1  关于不活跃用户:长期未打开APP,则会被Jpush标志为不活跃用户,之后不再接收推送,(除非用户主动打开APP,此句话待验证) 2  新建的APP,所有安装用户都是活跃用户。 3  小米的手机,普通App默认是非自启动,自启动广播也被屏蔽。 1 2 3 问题9: EditText焦点键盘弹出问题:  取消:             在EditText的父级控件中找一个,设置成              android:focusable="true"              android:focusableInTouchMode="true"  获取: 1 2 3 4 5 问题10: 在Eclipse添加Android兼容包( v4、v7 appcompat ) http://www.cnblogs.com/kissazi2/p/3644848.html

问题11: ScrollView 和Listview冲突的解决方案: 方案一  方案二  方案三  方案四。。推荐

问题12: 不同版本ADT混淆方式: 参考:http://www.tuicool.com/articles/amIn6vj 

问题13 自动开关机实现: http://www.cnblogs.com/melaniedeng/archive/2012/02/16/2355066.html

问题14: FragmentStatePagerAdapter+viewpager第二次进入该fragment不显示数据 解决方法:      在含有ViewPager的Fragment的onCreateView方法中添加代码:                 if (view != null) {                 ViewGroup parent = (ViewGroup) view.getParent();                 if (parent != null) {                 parent.removeView(view);                 }                 return view;                 } 1 2 3 4 5 6 7 8 9 问题15: 报错:     AAPT err(1663341075): libpng error: Not a PNG file 原因:     使用的图片中存在不是png的图片 解决办法:     仅仅改后缀名是不可以的,必须使用工具转换,此处 推荐使用ImageMagick 1 2 3 4 5 6 16 Android半透明设置:  android:background="#b0000000"  支持格式如下:         #RGB         #ARGB         #RRGGBB         #AARRGGBB

 #b0|000000 :b0代表透明度Alpha 1 2 3 4 5 6 7 8 参考

问题16: Error:Execution failed for task':app:processDebugResources'.> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Users/lincoln/Android/sdk/build-tools/23.0.3/aapt'' finished with non-zero exit value 1 1 分析:  :app:processDebugResources’;说明是资源出问题了;  常见原因:  如下代码:如果没有定义格式,即没有format=”dimension”就会报错

 <declare-styleable name="Btn_normal">         <attr name="img_width"             format="dimension"/>     </declare-styleable> 1 2 3 4 Android M新特性

EditTextView: 1. 设置光标到指定位置:setSelection() 2. 隐藏光标:setCursorVisible(false); 3. 选中内容:setSelectAllOnFocus(true); 4. 失去焦点:         et.requestFocus(); //请求获取焦点         et.clearFocus(); //清除焦点 ---------------------  作者:yingx0202  来源:  原文:https://blog.csdn.net/yingx0202/article/details/51115240  版权声明:本文为博主原创文章,转载请附上博文链接!

转载请注明原文地址: https://www.6miu.com/read-5035815.html

最新回复(0)