- 博客(21)
- 资源 (7)
- 收藏
- 关注
原创 Typorn退出全屏
第一次用typorn,点了全屏后不知道怎么退出全屏,esc没用,关闭了再打开也没用。真的坑啊搞半天是 F11,某些电脑是 fn+f11
2019-04-30 16:27:03
3879
5
原创 总结:listView等的优化和图片错位问题
ListView,RecyclerView 用过很多,写起来也没什么难度,但最近面试时被问及这个问题,发觉答的都不全面,现总结下最全面的优化方案如下:ContentVeiw的复用。在RecyclerView中强制必须复用。listView中就要自己实现,listview的复用机制就是条目很多的时候,只会创建满一屏的条目,当滑动的时候不会再去创建新的view,而是复用已经滑出屏幕的view,对...
2018-04-09 11:16:31
1909
1
原创 机顶盒开发中常用adb shell 命令
开启/关闭adb服务 adb start-server / adb kill-serveradb连接设备/断开设备 adb connect ip / adb disconnect 显示连接设备状态/ 选择设备执行 adb devices / adb -s 设备编号adb 安装卸载apk adb install [apk存放路劲] /adb uninstall [包...
2018-04-08 09:49:35
9054
原创 Android 零碎知识点
requestLayout() 方法刷新ui,会调用 onMeasure(),onLayout(),onDraw()方法 invalidate()方法刷新ui,只会调用onDraw()方法,此时视图大小位置应未变化,主线程调用 postInvalidate(),同上,可在子线程调用,刷新ui。...
2018-04-08 09:49:17
261
原创 LruCache 浅析
简介 LruCache (Least Recently Used) 是安卓中一个关于内存缓存的类,特别是在操作图片的时候,大量的图片会导致oom,所以采用lru,可以保持一个最大size的内存缓存,如果超过这个size,会把最少使用的缓存给移除,以保证内存不会不限增加移除的又是最少使用的缓存。构造 通过构造可以看到,内部使用的是 LinkedHashMap ,真是这个关键的Linke...
2018-04-04 11:19:14
711
原创 Android6.0/7.0/O的新特性
运行时权限系统6.0现在Android把权限分为了敏感权限与非敏感权限,对于非敏感权限,开发者同样是在AndroidMainifest中进行权限申请,这些权限会在Android App安装的时候显示出来,与现在一样,而敏感权限,则会通过Dialog的方式在使用时弹出Notification && Notification Menu通知栏快捷回复 在Android N上,Android对通知栏进行
2017-06-01 21:49:51
393
原创 RxJava /RxAndroid
RxJava 到底是什么一个词:异步。 RxJava 的本质可以压缩为异步这一个词。说到根上,它就是一个实现异步操作的库一个词:简洁。 异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 Android 创造的 AsyncTask 和Handler ,其实都是为了让异步代码更加简洁。RxJava 的优势也是简洁,但它的简洁的与众不同之处在于
2017-05-31 16:56:39
264
原创 Android百分比布局(percent-support-lib)
使用 添加库依赖compile ‘com.android.support:percent:22.2.0’两种布局供大家使用:PercentRelativeLayout、PercentFrameLayout,通过名字就可以看出,这是继承自FrameLayout和RelativeLayout两个容器类;支持的属性有:layout_widthPercent / layout_h
2017-05-27 16:36:57
428
原创 ConstraintLayout(约束布局)
ConstraintLayout(约束布局)使用ConstraintLayout需要我们添加如下依赖: compile ‘com.android.support.constraint:constraint-layout:1.0.0-alpha4’View在布局中相对于其他元素的位置是怎样的layout_constraint[源瞄点]_[目标锚点]=”[目标id]”如 app:layout_con
2017-05-25 00:06:26
752
原创 android推送解决方案
轮询(Pull)方式应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。SMS(Push)方式:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,并获取其显示内容进行处理。这是一个不错的想法,我就见过采用这个方案
2017-05-24 23:30:33
234
原创 android推送解决方案
轮询(Pull)方式应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。SMS(Push)方式:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,并获取其显示内容进行处理。这是一个不错的想法,我就见过采用这个方案
2017-05-24 23:30:08
234
原创 android 架构模式
MVC模式MVC即Model-View-Controller。M:逻辑模型,V:视图模型,C:控制器。 对于原生的Android项目来说,layout.xml里面的xml文件就对应于MVC的view层,而各种Java bean,还有一些类似repository类就对应于model层,至于controller层嘛,当然就是各种activity问题就在于xml作为view层,控制能力实在太弱了,你
2017-05-19 15:51:23
739
原创 android中常见设计模式
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。public class Singleton { private static volatile Singleton instance = null; private Singleton(){ } public static Singleton getInstance() { i
2017-05-19 13:00:48
1145
原创 Volatile
在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。 要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环
2017-05-18 17:12:57
183
原创 android图片压缩
一.图片的基本知识 1.文件形式(即以二进制形式存在于硬盘上) 获取大小(Byte):File.length() 2.流的形式(即以二进制形式存在于内存中) 获取大小(Byte):new FileInputStream(File).available() 3.Bitmap形式 获取大小(Byte):Bitmap.getByteCount()下面以我拍摄的图片为例,看下三者的大小区别(所用
2017-05-18 16:52:23
201
原创 快捷键
studio 快捷键alt +f1 定位该文件在文件目录的位置 ctrl+alt+f7 关联调用他的位置 activity 中点击图标定位资源文件 ctrl+alt+m 提取方法 ctrl+shift +r 為变量重命名(变量使用很多的时候,很便捷) ctrl+shift+f 繁简切换 shift+space 半角切换 ctrl+alt 左右键 浏览位置切换
2017-05-18 16:49:24
174
原创 真机monkey测试
一。真机monkey测试 1.root手机,手机连接电脑,在platform-tools下运行命令行 2.输入 adb devices 显示连接情况 3.依次输入 adb shell su cd data/data ls 4.找到要测试的安装包,输入 mon
2017-05-18 16:48:17
430
原创 无线调试
一 ,无线调试 1.root手机 获取最高权限 2.下载个adbwireless 获取手机在wifi下的ip地址 或者在wifi设置里找到手机在wifi下的ipv4地址 3.在sdk的platform-tools文件目录下shift 右键调出命令行 adb connect ip地址 即可链接二,查看工程的数据库 1.root手机 获取最高权限
2017-05-18 16:47:43
493
原创 android 内存泄露与解决
Java 中的内存分配主要是分三块:静态储存区:编译时就分配好,在程序整个运行期间都存在。它主要存放静态数据和常量。 栈区:当方法执行时,会在栈区内存中创建方法体内部的局部变量,方法结束后自动释放内存。 堆区:通常存放 new 出来的对象。由 Java 垃圾回收器回收。栈与堆的区别 栈内存用来存放局部变量和函数参数等。它是先进后出的队列,进出一一对应,不产生碎片,运行效率稳定高。当超过变量的作
2017-05-18 16:18:09
253
原创 Android 内存相关
内存泄露 memory leak 是指程序在申请内存后,无法释放已申请的内存空间 gc无法回收造成内存泄露的行为1. 非静态内部类的静态实例容易造成内存泄漏 非静态内部类持有外部类的引用,外部类销毁时如果仍被内部类持有 将无法gc2.使用handler时的内存问题 我们知道,Handler通过发送Message与主线程交互,Message发出之后是存储在MessageQueue中的,有些
2017-05-18 15:25:04
270
原创 volley
volley简介 Volley请求网络都是基于请求队列的,开发者只要把请求放在请求队列中就可以了,请求队列会依次进行请求,一般情况下, 一个应用程序如果网络请求没有特别频繁则完全可以只有一个请求队列(对应Application),如果非常多或其他情况, 则可以是一个Activity对应一个网络请求队列,这就要看具体情况了,首先创建队列: RequestQueue mQueue = Volle
2017-05-17 00:10:07
183
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人