android
ice_eyes
这个作者很懒,什么都没留下…
展开
-
Jetpack学习之Room数据库的注解
慕课网-jetpack实战课程笔记room数据库众多注解Room是Google为了简化旧式的SQLite操作专门提供的。1.拥有SQLite的所有操作功能;2.使用简单(类似于Retrofit库),通过注解的方式实现相关功能。编译时自动生成实现类Impl3.LiveData,LifeCycle,Paging天然融合,支持在module的build.gradle文件里定义工程的缓存目录a...原创 2020-04-24 22:23:47 · 1918 阅读 · 0 评论 -
android内存--强弱软虚
为什么要进行内存优化?.app运行内存限制,OOM导致app崩溃;app流畅性、相应速度和用户体验和内存息息相关。 android的内存管理方式:android系统内存分配与回收方式:每个app对应一个linux进程,在一个虚拟机下运行。 cmd ->adb shell 命令行模式下用ps命令可以看到所有正在运行的进程。GC只在Heap剩余空间不够时才出发进行垃圾回收。app内存...原创 2018-04-27 16:31:09 · 489 阅读 · 1 评论 -
android动画2--属性动画
属性动画Animator操作属性的getset方法来改变属性,画出动画效果。 实现Animation框架的功能。 位移和旋转: public void move(View view){ ObjectAnimator.ofFloat(mImageView,"translationX",0,200f).setDuration(1000).start(); ...原创 2018-04-26 22:03:26 · 247 阅读 · 0 评论 -
android动画1
android中的动画包括以下几类:系统不断的调用onDraw方法重绘页面。 Tween Animation 变换动画 Frame Animation 帧动画 Layout Animation 布局动画 Property Animation 属性动画 另外还有矢量图动画、轨迹动画等。 一、 Tween Animation 变换动画 alpha:渐变透明度;Scale:渐变尺寸缩放动画...原创 2018-04-18 21:48:55 · 165 阅读 · 0 评论 -
自定义控件1
为什么要自定义控件?1做特定的显示风格;2处理特有的用户交互,例如实现可滑动的textView;3优化布局,例如把title抽出来;4封装,复用,例如多项选择框等 自定义控件的步骤:1.自定义属性的声明与获取;2测量onMeasure方法;3,布局onLayout(ViewGroup);4,绘制,onDraw;5,onTouchEvent;6,onInterceptTouchEvent(View...原创 2018-04-17 22:40:17 · 115 阅读 · 0 评论 -
剑指offer4--重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; ...原创 2018-04-05 16:12:45 · 148 阅读 · 0 评论 -
android线程间通信机制4--handler2---handlerThread
Looper通过prepare()方法创建looper,并将其保存在sThreadLocal中。通过looper.loop开启循环,开始消息分发。 handler的dispatchMessage(msg)handler引起内存泄露的原因及处理办法:原因:静态内部类持有外部类的匿名引用,导致外部act无法释放。 解决办法:handler内部持有外部act的弱引用,并把handler改为静态内...原创 2018-03-27 16:46:37 · 124 阅读 · 0 评论 -
HTTP请求和响应报文详解
Http请求报文由三部分组成:请求行、请求头、请求体。 HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,客户程序还可以选择发送其他的请求头。 ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,androi...原创 2018-04-02 15:51:22 · 1019 阅读 · 0 评论 -
Anr&Oom学习
什么是Anr? Application not responding 引起Anr的原因? 主线程被IO操作阻塞 主线程里存在了耗时计算 5s内没有响应用户输入事件 10s内广播接收器没有处理完毕 20s内服务没有处理完毕 Android中哪些操作是在主线程? Activity的所有生命周期回调都在主线程中执行 Service默认在主线程中执行 BroadcastReceive...原创 2018-04-01 19:00:02 · 207 阅读 · 0 评论 -
protobuf格式的java使用
Protobuf协议,全称:Protocol Buffer 它跟JSON,XML一样,是一个规定好的数据传播格式。不同于XML、JSON等的数据格式,protobuf直接将用户数据序列化成了二进制数据,这从本质上决定了它的性能优势,也是目前大家选择它的一个重要原因,特别是当对传输效率要求较高的情况下。 目前主要有两个大版本:proto2 和 proto3。 其中 proto2 支持 Java、...转载 2018-04-01 10:41:21 · 832 阅读 · 0 评论 -
android线程间通信机制3---handler1
Android应用程序通过消息机制来驱动。 Android应用程序的每一个线程在启动时,都可以首先在内部创建一个消息队列,然后进入一个无限循环,不断检查它的消息队列是否有新的消息需要处理。如果有新的消息需要处理,线程就会将它从消息队列中取出来,并对它进行处理;否则线程进入睡眠等待状态,直到有新的消息需要处理为止。 Handler作用:Handler是专门用来在线程间传递信息的工具类,在Andr...原创 2018-01-12 21:31:35 · 255 阅读 · 0 评论 -
android线程间通信机制5---IntentService
IntentService就是一个自身含有消息循环的Service,内部封装了一个消息队列和一个HandlerThread。 onHandleIntent方法运行在它的消息队列线程中。原创 2018-03-30 19:23:42 · 202 阅读 · 0 评论 -
android线程间通信机制1
线程的优先级:线程创建时,子线程继承父线程的优先级。线程创建后,可以调用setPriority()方法改变优先级,默认的线程优先级是5。线程优先级是1-10之间的正整数。 常用的常量Thread.MIN_PRIORITY=1; Thread.MAX_PRIORITY =10;Thread.NORM_PRIORITY=5; 不能依靠线程的优先级来决定线程的执行顺序。线程的调度:线程调度器选原创 2018-01-10 13:54:33 · 186 阅读 · 0 评论 -
android线程间通信机制2
UI线程:当一个Android程序启动时,系统会为该程序创建一个进程,然后创建一个线程运行在这个进程中,称为主线程(main thread).主线程主要负责将事件分发到对应的界面控件中,包括控件绘制事件。由于主线程是程序和UI控件交互的线程,所以也被称为UI线程。Android框架中这种在单条线程中进行事件分发及UI交互的机制也被称为Android单线程模型。 单线程模型的规则:不要在UI线程中...原创 2018-01-10 17:15:08 · 308 阅读 · 0 评论 -
RecyclerView+SnapHelper实现无限循环筛选控件
项目用到横向滑动的单项选择控件。需求如下: 1.选项由后台配置,也就是控件要动态设置宽度;2.每次滑动都要左对齐,并默认选中最左边选项;3.控件可以无限循环。动态设置控件宽度:获取adapter的item宽度;获取adapter里装载的itemCount。 每次滑动都要左对齐:利用LinearSnapHelper中calculateDistanceToFinalSnap的方法实现; 默认选中最原创 2017-07-20 19:05:32 · 5945 阅读 · 0 评论 -
登录页面弹出软键盘把页面顶上去
login页面,输入框获得焦点后弹出软键盘,如果软键盘遮住登录按钮,用户体验不好,所以要把登录按钮以上的布局顶上去。原创 2017-03-23 20:47:51 · 3393 阅读 · 0 评论 -
Android激活设备管理器--一键锁屏
激活设备管理器就是把系统的某些权力例如锁屏,链接蓝牙等功能交给某个应用来执行。也就是说,如果想要某个应用执行某些系统超级管理员才能执行的功能时,就需要让这个应用激活设备管理器。此时该应用就拿到了系统管理员的权限。这件事要怎么做呢?写一个广播接收者,给这个BroadcastReceiver申请系统管理员的权限,让操作系统给广播接收者授权。这样就激活了系统的授权组件。这些功能都是由android提供的D原创 2016-10-27 23:30:37 · 8047 阅读 · 0 评论 -
android传感器2--指南针
指南针的实现原理: 利用android的TYPE_ORIENTATION传感器和旋转动画实现指南针。 方向传感器的event.values是一个float类型的长度为3的数组。 float azimuth_angle = event.values[0];//在z轴旋转度 float pitch_angle = event.values[1];//在x轴旋转度 float roll_a原创 2016-10-23 22:31:34 · 616 阅读 · 1 评论