Android小问题的处理
来源:互联网 发布:淘宝上怎么删除评价 编辑:程序博客网 时间:2024/06/06 10:58
1.view事件的终止与向下分发与回朔总结:
ViewGroup 想把自己分发给自己的onTouchEvent,需要拦截器onInterceptTouchEvent方法return true 把事件拦截下来。
ViewGroup 的拦截器onInterceptTouchEvent 默认是不拦截的,所以return super.onInterceptTouchEvent()=return false;
View 没有拦截器,为了让View可以把事件分发给自己的onTouchEvent,View的dispatchTouchEvent默认实现(super)就是把事件分发给自己的onTouchEvent。
2.跳转activity将之前所有的activity栈清空掉:
如:开发中遇到的退出登录需要将之前打开的所有activity栈处理掉。
解决办法:Intent intent = new Intent(A.this,B.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
原理说明:startActivity 的时候传递 FLAG_ACTIVITY_CLEAR_TASK 这个标志,那么这个标志将会清除之前所有已经打开的 activity .然后将会变成另外一个空栈的 root ,然后其他的 Activitys 就都被关闭了.这个方法必须跟着 {@link #FLAG_ACTIVITY_NEW_TASK} 一起使用.
3.简单粗暴的内存溢出(OOM)的解决办法
解决思路:当在应用测试的时候,应用在绝大部份的机型上是可以正常跑的,在少部份 的的机型上出现OOM,除了对代码做出优化外,我们还可以让系统给应用分配更大的内存空间。
解决办法:<application
.......
android:largeHeap="true"
.........
/>
4.AlertDialog对话框设置点击其他地方对话框不消失
解决办法:android4.0以上AlertDialog在触摸对话框边缘的时候,对 话框会消失,我们可以设置这么一条属性让对话框不消失,当让必须要AlertDialog.bulid.create()才可以调如下两个方法。
方法一:setCanceledOnTouchOutside(fase)设置后按对话框外边缘回不起作用,按返回键还会起作用。
方法二:setCancelable(false)调用这个,按对话框外边缘与饭后见都不起作用,对话框都不会消失。
5.Scrollview显示不全
解决办法:有时候Scrollview嵌套linearlayout时会出现显示不全的问题,这时要看看Scrollview的父布局是不是使用了CoordinatorLayout,当父布局使用CoordinatorLayout时内部应将Scrollview替换为NestedScrollview,这样就不会产生意想不到的bug。
同样在CoordinatorLayout内部使用ViewPager与Tab layout来显示不同的fragment时,如果fragment内部使用Scrollview,则会出现界面显示不全的问题。
6.ListView分割线的问题
原理解释:list view是不能设置Divider和高度的,如果设置了,最后一个条目会显示不全,因为onMeasure时在测量list view的高度时并没有把Divider的高度设置进去。
7.Listview滚动条隐藏处理
解决办法:setScrollbarFadingEnabled(true)设置这个不滑动的时候隐藏,滑动 的时候显示。
setVerticalScrollBarEnabled(true)滑动与不滑动都隐藏。与这个效果一样的还有android:scrollbars="none"
8.RecyclerView item布局设置宽高无效的问题
原理解释:在adapter中插件viewholder加载布局有两种方式:第一种是: LayoutInflater.form(parent.getcontext()).inflate(R.layout.inflate_item,null),第二种方式是LayoutInflater.from(parent.getcontext()).inflate(R.layout.inflate_item,parent,flase),第一种root为null,这种方式没有指定将view加载到那个view上,也没有root的提供的layoutparams布局信息,这个时候调用view.getLayoutParams()就会返回null;第二种加载布局的方法root不为null,attachToRoot为false 这种加载方式,root不为null,但attachToRoot为false,因此加载的view不会添加到root上,但会用root生成LayoutParas信息这种法式item的宽高就不会失效。如果root不为null,attacToRoot为true的话,这是会将view添加到root上。根据recyclerview的源码分析,如果root为null则LayoutParas的信息使用的默认信息,而这个默认信息就是包裹内容,这就是为什么设置宽高无效的原因。
文章来源于:https://mp.weixin.qq.com/s?__biz=MzIxMTg5NjQyMA==&mid=2247483833&idx=1&sn=4e2b78ea2ffbed896166f6f195ff0377&chksm=974f10b2a03899a4496ea5ba4f3fb89c81e256b290abc844695425452eb14810714cbf0cced3#rd
9.json数据解析细节注意
注意点:在解析复杂的json串的时候,要从里往外解析,将从最里边开始分组javabean,一层一层往外解析。如果在解析的时候存在内部类的时候,要将这个内部类写成public static 的公共类。这样在json解析的时候就不会报json解析出错了。
10.IntentService
我们在做一些耗时的操作(比如上传一些文件,但我在上传的时候要干其他的事情这个时候我们要用到intentService)IntentService是一个基于service的一个类,用来处理异步的请求,我们可以通过startService(intent)来提起请求,该service会在会要的时候创建,当完成所有的任务后回自己关闭,
阅读全文
0 0
- Android小问题的处理
- 【Android】【问题处理】处理过的问题
- fstream处理中文时的小问题
- java异常处理时的小问题
- 字符串处理中遇到的小问题
- Hive小文件问题的处理
- 有关数组的小处理问题
- Hive 小文件问题的处理
- android的一个小错误的处理
- android应用程序图标比正常第三方小的问题处理
- Android开发的小问题
- Android开发的小问题
- Android ellipsize的小问题
- Android遇到的小问题
- Android小问题的修改
- Android处理键盘事件的小例子
- Android开发处理时间的小方法
- 小问题快速处理
- CentOS7安装JDK1.8
- ++在前和++在后
- python实现对矩阵按照行、列求和,不使用numpy、pandas模块
- CentOS 6.9系统下Docker的安装配置详解
- volatile 关键字
- Android小问题的处理
- 求递推序列的第N项
- 大对象映射
- 打印杨辉三角
- leetcode排序算法基础--2017-8-1
- Android开发讯飞语音步骤
- 轻轻揭开 b*tree 索引结构的神秘面纱
- hdu 2588 GCD(欧拉函数)
- JavaScript打印任意奇数行菱形
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
天运农女来种田
天农九
夜染殷天农医悍女全集
诸天降临 离火加农炮
天运农女来种田 记忆流觞
农女天娇灵田空间养仙宠
广东天农食品有限公司
黑篮之天冠首将
平天冠
7天美容冠
做牙冠要多少天
妙冠娇宠 天初暖
冠盖满京华 府天
天冠
葬天决
九天玄阳决
龙破九天决免费阅读
叶辰九天玄阳决
江湖风云录天宝决
九破九天决
决天武帝
荒古斩天决
天魔神决
九天玄阳决叶晨
九天星辰决
神象镇天决
混沌帝天决
九龙帝天决
九帝斩天决
天罡决
九转炼天决
九星天晨决
万古弑天决
男主修炼九天玄阳决叫叶辰
鸿蒙灭天决
九天玄阳决叶辰夏若雪
天荒决 帝王末世路
怒天决
九天玄阳决叶辰嗜血狂龙
九天星辰决全文免费阅读
主角名叫叶辰会九天玄阳决