王温暖的博客

这货太懒了

Android AIDL跨进程通信

AIDL其实是一个IPC通信机制, 即进程之间也可以相互通信,传递有效数据,那么怎么创建使用呢?第一次创建一整套AIDL还是有点懵逼,而且我们平时不经常使用AIDL,今天记录下创建的整个过程,以备不时之需。 我们知道AIDL是跨进程通信,那么肯定是在两个进程中,我们这里创建两个工程,分别作为se...

2019-05-14 16:24:49

阅读数 21

评论数 0

Android service生命周期详解

首先创建TestService.java服务: import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import andr...

2019-05-14 15:07:38

阅读数 13

评论数 0

service显示启动和隐式启动

隐式启动:(通过设置包名和action启动) component代码需要添加包名和service名: Intent intent = new Intent(); ComponentName componentName = new Compone...

2019-05-14 14:37:01

阅读数 16

评论数 0

Android横竖屏的写法、及savedInstanceState的使用

我们的横竖屏布局文件: 竖屏XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="htt...

2019-05-13 15:43:12

阅读数 20

评论数 0

activity和application所有的生命周期回调

Application的生命周期: package com.example.starttiming; import android.app.Application; import android.content.Context; import android.content.Intent; ...

2019-04-03 14:52:23

阅读数 30

评论数 0

两种方式循环检测条件变化handler和sleep

1.使用handler循环往外抛消息检测 public void startDetect(long initialDelay, long period){ Handler handler = new Handler(Looper.getMainLooper())...

2019-03-14 11:47:43

阅读数 45

评论数 0

RecyclerView局部刷新DiffUtil总结

项目地址:https://github.com/buder-cp/base_component_learn/tree/master/DiffUtil_Learn

2019-03-14 09:32:36

阅读数 39

评论数 0

Timer、ScheduleThreadPool区分

参考鸿阳博客:https://blog.csdn.net/lmj623565791/article/details/27109467 timer是单线程任务,ScheduledExecutorService可以自定定义线程数,是并发执行的: 1、Timer管理延时任务的缺陷 以前在项目中也经...

2019-03-14 08:53:27

阅读数 90

评论数 0

Android计时常用的7种方式

以下计时方式都是Android中常见的计时方式,现总结如下: 1.timer、timertask配合handler计时 2.countdowntimer计时 3.handler精确计时方式 4.handler普通循环方式 5.ScheduleExecuteService定时 6.Ala...

2019-03-14 08:47:06

阅读数 159

评论数 0

handler实现精确计时的两种方式

首先说下关于handler自身的误差: 如果使用handler.postDealyed(……, 1000)方式来进行每秒的计时,是不准确的,是的,有很大误差,误差的原因在于在你收到消息,到你重新发出handler.postDealyed的时间,并不是瞬间完成的,这里面有很多逻辑处理的时间,即使...

2019-03-13 22:16:32

阅读数 80

评论数 0

策略模式

interface MathAlgorithm { public int calculate(int num1, int num2); } class MathAdd implements MathAlgorithm{ @Override public int calculate...

2019-03-13 21:09:32

阅读数 21

评论数 0

观察者模式实践

这个模式的定义: 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新 使用场景如下: 1.有一种短信服务,比如天气预报服务,一旦你订阅该服务,你只需按月付费,付完费后,每天一旦有天气信息更新,它就会及时向你发送最新的天气信息。 2.杂...

2019-03-13 20:22:33

阅读数 22

评论数 0

一眼就会的建造者模式Builder

1.构造一个普通的bean: public class Person { private String name; private int age; private double height; private double weight; publi...

2019-03-13 16:32:47

阅读数 20

评论数 0

onActivityResult()和onStart()、onResume()的调用顺序

从上面的源码注释第二段可以看到:You will receive this call immediately before onResume() when your activity is re-starting. 所以很明显,在activity重新恢复启动的时候,onActivityResult...

2019-03-13 15:40:19

阅读数 61

评论数 0

android drawable drawable-xhdpi图片资源变大

在android 里面drawable里面是放置像素密码最低的资源。drawable-xhdpi对应像素密度为720*1280,drawable-hdpi像素密度为480*800 。在dp和px 转换关系中,如果当前分辨率为xhdpi ,那么1dp=2px。如果当前分辨率为hdpi ,那么1dp=...

2019-02-26 17:48:41

阅读数 77

评论数 0

还原Proguard混淆过的堆栈

代码混淆后,也会导致Crash堆栈信息被混淆,难以阅读,增加定位问题位置的难度,一个混淆后的Crash堆栈信息类似这样,核心的信息都没了。为了解决这个问题,可以使用<SDK目录>\tools\proguard\bin下的proguardgui.bat脚本...

2019-02-22 20:34:33

阅读数 51

评论数 0

Android混淆需要keep的情况

不需要混淆的场景如下,否则会出现运行错误: 1.如果使用了Gson之类的工具要使JavaBean类即实体类不被混淆。 2.如果使用了自定义控件那么要保证它们不参与混淆。 3.如果使用了枚举要保证枚举不被混淆。 4.对第三方库中的类不进行混淆 5.如果使用了Gson之类的工具要保证实体类不...

2019-02-19 20:05:46

阅读数 235

评论数 0

Android studio加载so调用本地方法

先把so文件放到APP的libs目录下: 编辑app下的build.gradle文件: 在build.gradle下添加,和defaultConfig、buildTypes同级: sourceSets { main { jniLibs.s...

2019-02-19 11:56:03

阅读数 290

评论数 0

使用Gson解析json

json的两种数据格式: json就是用来进行网络数据传输的一种格式,目前的使用很广泛,其格式就是一种键值对的形式,很方便进行解析。json有JsonObject和JsonArray两种形式,如何进行区分呢? -凡是看到 { 就是一个JsonObject -凡是看到 [ 就是一个JsonAr...

2019-02-15 15:47:34

阅读数 45

评论数 0

inflate方法参数学习

第三个参数true和false的区别: 对于非空的 ViewGroup rooter,以下两句是等效的: View view = inflater.inflate(R.layout.linearlayout, ll, false); ll.addView(view); 与  View ...

2019-02-11 15:29:21

阅读数 63

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭