Android
chavinchen
肩挑凡事,拳握初心~
展开
-
【杂耍】小米3刷MIUI7系统
前段时间开发机坏了,一直没空弄,刚才才弄好,有点操作含量,记录一下;年前用开发机和人家荣耀开黑,打到一半瞬间黑屏进入重启,根据本人第一直觉,感觉这货应该是没电了~,果然,回家冲了几分钟又正常了,事情发生在第二天早上....怎么弄都开不了机(开发机嘛,从来都不关的,一晚上过去本来就没多少电,自然又没电了),然后就充电,差上电源后问题就来了,不停重启进不了系统;当时我就没多想,估计是系统崩...原创 2017-02-06 18:04:33 · 5513 阅读 · 0 评论 -
【多线程】六、锁与同步
锁与同步锁定的代码块在多线程访问的时候以串行的方式执行,可以保证可见性、有序性、原子性概念含义可见性每个线程有自己的内存缓存,其他线程缓存在本线程中不可见原子性对于非单一的指令,要么都执行,要么都不执行有序性编译优化对指令进行重排序,只保证重排序的结果和没排序的结果一致(happens-before规则)Lock和ConditionReentran...原创 2018-12-23 19:16:16 · 220 阅读 · 0 评论 -
【多线程】七、阻塞队列
BlockingQueue非阻塞方法:boolean offer(e[,timeout, timeUnit]); // 添加,失败返回false;E poll([timeout, timeUnit]); // 取出,失败返回null阻塞线程方法:put(e); // 添加,若空间不足则阻塞直到添加成功E take(); // 取出,若为空则阻塞直到有数据int drainTo(co...原创 2018-12-23 19:16:51 · 276 阅读 · 0 评论 -
【多线程】八、异步计算结果获取
竞争分量为解决大量线程竞争问题, 子线程基于分量计算(分量在单线程模型上保证原子性),计算完毕后合并分量取结果;// Adder: LongAdder, DoubleAdder// Accumulator: LongAccumulator, DoubleAccumulator// 初始化LongAdder adder = new LongAdder();LongAccumulator...原创 2018-12-23 19:17:08 · 354 阅读 · 0 评论 -
【多线程】九、Android异步任务
Handler机制相关用途说明MessageQueue消息队列容器单链表实现(1)enqueueMessage:添加消息必要时唤醒next(2)next:读取消息,无消息时阻塞Looper消息循环读取器(1)Looper.prepare():创建MessageQueue(2)Looper.loop():启动无限循环调MessageQueue.next()若返回...原创 2018-12-23 19:18:47 · 223 阅读 · 0 评论 -
【多线程】基于CAS分析对ABA问题解决方案的一点思考
一、CAS背景synchronized加锁消耗太大volatile只保证可见性,不保证原子性基础用CPU提供的特殊指令,可以:自动更新共享数据;能检测到是否有其他线程的干扰;CAS(Compare and Swap)不加锁而是尝试去完成替换(写)操作,如果失败就重试,直到成功;分析// AtomicIntegerpublic class AtomicInteger ex...原创 2019-01-26 16:30:50 · 343 阅读 · 2 评论 -
【Android】初探自动化构建-Gradle中的Groovy
Groovy&GradleGroovy是基于JVM的一种脚本语言。Gradle是新一代的自动化构建工具(似Ant+Ivy,Maven),其核心功能由Java实现。并包含由Groovy编写的自动化构建领域特定语言(DSL)。Gradle的构建脚本(build.gradle)就是一个可执行的Groovy脚本。Groovy的语法特性Groovy底层由Java实现,几乎100%地支持J...原创 2019-03-04 13:49:57 · 275 阅读 · 0 评论 -
【Android】关于Android Studio和adb的使用记录
关于Android Studio和adb的使用记录一些常用的Android Studio(IntelliJ Idea)快捷键常用分析 Analyze:页面元素分析 Layout Inspector用adb 查看 activity用adb操作包(安装-查看-启动-停止-卸载)用adb进行输入(adb shell input)工欲善其事,必先利其器。最近因为换了Mac,很多地方有些不太适应,刚好最...原创 2019-04-05 16:24:25 · 862 阅读 · 0 评论 -
【Android】Macbook Pro 10.14(macOS Mojave)编译Android9.0(aosp master)过程记录
记一次Android源码编译过程实验环境MacOS Mojave 10.14; RAM 16GSSD硬盘 960G能访问google的网络环境第一步:准备环境可参考官网说明:https://source.android.com/setup/build/initializing准备磁盘磁盘镜像方式(官方推荐25G,建议60G+)# 创建一个 .dmg(也可能是 .dmg.s...原创 2019-05-12 15:25:00 · 1656 阅读 · 0 评论 -
【多线程】五、线程池
线程池为解决频繁线程创建、销毁带来的不必要损耗,推荐使用线程池。ThreadPoolExecutor( corePoolSize, // 核心线程数,核心线程一直存活(即使空闲,除非allowCoreThreadTimeout(true)) maximumPoolSize, // 最大线程数 keepAliveTime, // 非核心线程闲置时长,超时线程会被回收 timeUnit, ...原创 2018-12-23 19:15:33 · 295 阅读 · 0 评论 -
【多线程】四、线程异常抓捕
异常处理路径Created with Raphaël 2.2.0Try-Catch链线程处理器线程组处理器父线程组处理器全局处理器系统层(不处理ThreadDeath)UncaughtExceptionHandler handler;// 为线程设置处理器thread.setUncaughtExceptionHandler(handler);// 使用线程组创建线程ThreadGr...原创 2018-12-23 19:14:56 · 254 阅读 · 0 评论 -
【多线程】三、线程访问变量
进程与线程: 进程独享内存数据,线程共享内存数据。线程依附于进程;线程与调度: 多核CPU下,线程可以真正并行,CPU数量小于线程数时则需调度; 抢占式调度:OS会剥夺线程运行权,给其他线程执行机会(时间片轮转) 协作式调度:线程只有在 被阻塞和等待时 才会失去运行权;原创 2018-12-23 19:14:19 · 413 阅读 · 0 评论 -
【工具】Android Studio快捷使用
因为Geogle停止对ADT的维护更新,所以Android开发迟早要换AS环境,对于使用Eclipse做Java开发没接触过Intellij的人来说As上手并不是那么容易的(特别是英文水平不怎么出色的童鞋)本文主要涉及:Android Studio开发环境搭建导入Eclipse ADT项目与配置集成Git和Github版本控制项目依赖处理(Gradle构建项目)常用快捷...原创 2017-10-04 23:31:32 · 605 阅读 · 0 评论 -
【Android】单例模式的推荐写法
单例如果考虑性能问题, 一般会选择懒汉式延迟加载这里记录一下线程安全的单例写法写法一public class MySingleton { private static volatile MySingleton sInstance; // 防止指令乱序 private MySingleton() {} public static MySingleton...原创 2018-05-10 17:25:55 · 323 阅读 · 0 评论 -
【Android】探索org.json.JSONObject解析Long数据丢失精度问题
以下所指的JSONObject均为org.json.JSONObject;get系方法和opt系方法区别get系方法在key不存在时候会抛受检异常(JSONException)opt系方法在key不存在时候会返回默认值源码: 这里nameValuePairs类型为LinkedHashMap。getLong或optLong可能导致的长整型精度丢失通过源码可知, 不...原创 2018-06-13 11:06:09 · 1539 阅读 · 0 评论 -
【多线程】二、线程优先级&守护线程
对于执行大量并行任务, 使用线程池: 1. 可减少创建和销毁线程上的消耗和”切换过度”; 2. 同时避免大量创建线程耗尽内存;建议通过ThreadPoolExecutor而不是Executors创建线程池; 原因如下 1. FixedThreadPool,SingleThreadPool 可能导致积压大量请求(Integer.MAX_VALUE) 2....原创 2018-12-23 19:13:53 · 334 阅读 · 0 评论 -
【Android】使用Binder池减少Service进程数
定义Binder池AIDL接口:IBinderPool统一管理Binder池:BinderPoolManager实现WorkService拓展各业务模块BinderIBinderPool.aidlinterface IBinderPool { IBinder query(in int code);}BinderPoolManager.java// BinderPool...原创 2018-11-21 00:15:28 · 276 阅读 · 1 评论 -
【Android】约束布局(ConstraintLayout)使用参考
目录尺寸约束自身约束参照约束位置约束相对位置位置偏向辅助线链约束(Chain)总结尺寸约束自身约束尺寸类型类型说明固定值如android:width="200dp"wrap_content按内容自适应MATCH_CONSTRAINT宽高0dp,任由约束拉伸宽高比在宽或高为MATCH_CONSTRAINT的情况下...原创 2018-11-22 23:14:01 · 568 阅读 · 0 评论 -
【多线程】一、线程状态切换
Hanlder机制相关用途说明MessageQueue消息队列容器单链表实现(1)enqueueMessage:添加消息必要时唤醒next(2)next:读取消息,无消息时阻塞Looper消息循环读取器(1)Looper.prepare():创建MessageQueue(2)Looper.loop():启动无限循环调MessageQueue.next()若返回...原创 2018-12-23 19:12:19 · 658 阅读 · 2 评论 -
【Android】自定义View相关记录-三大过程、滑动冲突、弹性滑动
类ViewPager的Demo控件,涉及Measure过程与MeasureSpecLayout过程滑动与滑动冲突弹性滑动Scrollerpackage com.chavinchen.demo;import android.annotation.SuppressLint;import android.content.Context;import android.content....原创 2018-12-22 01:34:31 · 232 阅读 · 0 评论 -
【Android】对JSONObject抛ConcurrentModificationException的一点思考
对JSONObject抛ConcurrentModificationException的一点思考问题背景NetUtil.get(url, arg, new NetUtil.Callback() { @WorkerThread @Override public void onSucceed(JSONObject repose) { } @WorkerTh...原创 2019-06-24 18:31:06 · 2102 阅读 · 1 评论