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 版权声明:本文为博主原创文章,转载请附上博文链接!