自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 Android 进程保活

转载地址 参考资料:gitbub上的一个进程保活的库安卓进程保活解决方案Android进程保活招式大全双进程守护APP保活方案最近查看进程保活的各种资料,实现方式无非就那么几种,可以参考上面的资料链接,本篇博文对这些实现进行了分析和测试,并把从中体会到的知识点做个总结汇总,算是加深相关知识的理解。本篇博文以github的一个库为例,来逐步讲解说明该库总的来说就是整合了:一像素Act...

2019-11-12 17:19:20 263

原创 Android数据库设计——4,动态更新数据库、数据库dao层拓展

动态更新获得从服务器传来的更新数据,解析成可执行的sql语句public class UpdateDbBean { private CreateVersion createVersion;//需要升级的数据库 public CreateVersion getCreateVersion() { return createVersion; } ...

2019-10-29 20:26:48 294

原创 Android数据库设计——3,自动化 分库、分表

分库、分表用户量大的时候必须去分库分表,分库分表也需要自动化分库前置工作/** * Describe:修改注解,增加主键标识 */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface DbField { String value();//表列名 boolean ...

2019-10-29 20:21:42 367

原创 Android数据库设计——2,面向对象(ORM)操作表:增、删、改、查

操作表操作表之前的优化/前置工作缓存表字段public class BaseDao<T> implements IBaseDao<T> { //...其他代码 //创建一个缓存,缓存表的字段对应的java实体类成员变量 //key是表的字段 //value是对应的java实体类的成员变量Field对象 private HashMa...

2019-10-29 20:16:59 141

原创 Android数据库设计——1,面向对象(ORM)建库、建表

创建数据库创建一个数据库工厂类,用于创建数据库操作对象和表的Dao对象//数据库工厂类public class BaseDaoFactory { //该对象是单例的 private static final BaseDaoFactory instance = new BaseDaoFactory(); //数据库对象 private SQLiteDataba...

2019-10-29 20:13:25 582

原创 Android Q(10) 文件存储适配

Android Q官方文档Android Q 分区存储Android Q文件存储机制修改成了沙盒模式,和IOS神似应用只能访问自己沙盒下的文件和公共媒体文件对于Android Q以下,还是使用老的文件存储方式权限Android Q不再需要申请文件读写权限,默认可以读写自己沙盒文件和公共媒体文件。所以,Q以上不需要再动态申请文件读写权限。沙盒存储/读写获取沙盒指定文件夹//废弃...

2019-09-29 18:05:37 13832 17

原创 Android 换肤(全局换肤,部分换肤,字体替换,导航栏替换,自定义view换肤,夜间/日间模式)

采集大致流程监听所有activity的生命周期回调//SkinActivityLifecycleapplication.registerActivityLifecycleCallbacks(new SkinActivityLifecycle());创建activity的时候自定义布局工厂//SkinLayoutFactory@Overridepublic void onA...

2019-09-24 09:43:27 496 1

原创 Hermes跨进程通讯——源码解析

源码分析核心类//typecenter对象专门用于缓存private static final TypeCenter TYPE_CENTER = TypeCenter.getInstance();//Channel对象用于绑定和解绑跨进程的serviceprivate static final Channel CHANNEL = Channel.getInstance();//发送各种...

2019-09-09 17:45:06 178

原创 Android APK 反编译

所需工具链接地址jd-gui.jarapktool.jar+aoktool.batdex2.jarcsdn整合资源jd-gui.jar+apktool.jar+apktool.bat+dex2.jar步骤apktool拿到所有资源文件,不包含java代码将需要编译的apk包与上述jar包放在同一个文件夹下运行命令:在当前文件夹下运行:apktool.bat d...

2019-08-20 11:53:23 59

原创 Hermes——跨进程通信(IPC)框架,使用介绍

概述Github地址:https://github.com/Xiaofei-it/HermesAndroid进程间通信IPC框架像调用本地函数一样调用其他进程的函数在本地进程创建其他进程类的对象在本进程获取其他进程的单例在本进程使用其他进程的工具类支持进程间函数回调,调用其他进程函数的时候可以传入回调函数,让其他进程回调本进程的方法自带内存优化,内置两个垃圾回收器,地进程在远...

2019-08-16 14:19:10 902

转载 饿了么开源项目Hermes:Android进程间通信IPC框架

学习学习

2019-08-14 14:28:19 146

原创 Eclipse中配置Spring插件

eclipse下载spring插件 搭梯子 help -> Eclipse Marketplace… 搜索sts,下载安装SpringSource Tool Suite 安装完成后,提示重启Eclipse 切换到Spring视图 over...

2019-08-13 09:37:25 373

原创 EventBus3.0源码解析——06. 总结

EventBus总结GitHub地址需要下载源码的,只需要将EventBus中的源码复制下来即可已将EventBus的整个源码解析过程上传了,点此下载大致流程懒加载的getDefault(),在注册的时候才初始化register(Object subscriber);//注册将当前class中所有带有@Subscribe注解的方法全部缓存到eventbus中缓存Map&...

2019-08-13 09:36:30 51

原创 EventBus3.0源码解析——05. unregister 注销

unregister (注销)unregister(Object subscriber)public synchronized void unregister(Object subscriber) { //获取当前Subscriber对象所缓存的所有eventType对象 //这里的eventType代表Subscriber对象中所有标记了@Subscribe的method ...

2019-08-12 17:04:17 112

原创 EventBus3.0源码解析——03. register 注册

register(注册)//注册事件接收EventBus.getDefault().register(this);//注册事件总线,在获取到eventbus单例后就可以注册了//注册方法中有两个至关重要的方法://1. 寻找到当前object对象中所有带@Subscribe注解标记的方法并保存起来//2. 对当前object对象中所有带@Subscribe注解的方法进行订阅publ...

2019-08-12 15:55:55 72

原创 EventBus3.0源码解析——02. init 初始化

init(初始化)getDefault()//volatile关键字在java并发编程中常用,比synchronized的开销成本要小,轻便//作用是线程能访问共享变量//共享变量包括所有的实例变量,静态变量和数组元素,他们都存放在堆内存中static volatile EventBus defaultInstance;//一个双重锁定的单例public static EventBu...

2019-08-12 15:45:24 58

原创 EventBus3.0源码解析——01.使用方法、@Subscribe

使用方法//注册事件EventBus.getDefault().register(Object subscriber);//注销事件EventBus.getDefault().unregister(Object subscriber);//发送EventBus.getDefault().post(Object event);//接收//这里的方法名不是关键所在,关键是发送的O...

2019-08-12 15:39:51 227

原创 EventBus3.0源码解析——04. post 发送

EventBus的源码结构很清晰也值得我们去学习,分析的东西太多,只能分段。EventBus的GitHub地址想要将源码导入as中分析的,只需要下载EventBus文件夹下的代码即可初始化getDefault()//volatile关键字在java并发编程中常用,比synchronized的开销成本要小,轻便//作用是线程能访问共享变量//共享变量包括所有的实例变量,静态变量和数...

2019-08-08 18:01:15 101

原创 java 动态代理

代理模式一个对象A通过持有另一个对象B,可以具有B同样的行为的模式。对象B是真正的实现类,而对象A则是相对于对象B的代理类。对象A可以在调用对象B的实现之前或者之后做一些事情,从而实现AOP的思想JDK的动态代理jdk动态代理是jre提供给我们的类库,可以直接使用//定义功能实现的接口public interface ITest{ String func1(String ...

2019-08-05 11:21:24 34

原创 Android中使用AspectJ(AOP)实现切面的三种功能(执行前、执行后、环绕)

Andorid Studio中配置AspectJapp module中dependencies { implementation 'org.aspectj:aspectjrt:1.9.4'}project module中buildscript { dependencies { classpath 'org.aspectj:aspectjtools:1.9.4'...

2019-08-02 23:24:30 280

原创 Android消息机制源码分析

Message//消息的传递包括内容、标识和Handler对象public class Message { //消息内容 public Object obj; //消息标识 public int what; //handler对象 public Handler target;}MessageQueue//消息队列的功能包含://1. ...

2019-07-18 18:21:59 38

原创 android studio搭建cmake的ndk环境

下载所需资源android studio中下载Ndk、LLDB、CMake创建可开发的jni项目环境新建jni文件路径项目右键: new -> folder -> Jni Folder文件存放路径:“src/main/cpp/”创建cmake配置文件CMakeLists.txta. 配置信息详见地址https://d.android.com/studio/pro...

2019-06-25 16:48:28 195

原创 Android MVP 最优实现

概述Model:执行逻辑View:视图展示Presenter:业务处理Contract:当前view的契约者Contract契约者,相当于约束一个activity或者fragment使用的mvp中的具体哪些方法public interface BaseContract { interface Model { void getVoid(); ...

2019-06-25 16:36:37 226

原创 Tomcat部署项目的几种方式

1,直接将项目的WebContent文件夹复制到tomcat的webapps文件夹下,运行tomcat2,将项目用IDE打成war包,将war包放在webapps文件夹下,运行tomcat3,静态部署,修改server.xml文件: 进入conf文件夹:D:\apache-tomcat-7.0\conf 打开server.xml 在<Host>标签中加入:<Ho...

2018-08-06 22:57:07 872

原创 Maven——3,通过Maven发布web项目

Eclipse中新建Maven project的web项目 配置Maven项目点击项目右键>>Build Path>>Configure Build Path1,将项目修改成web项目 2,删除web项目发布时无用代码 3,配置Tomcat tomcat根目录下,conf -> tomcat-users.xml<r...

2018-08-01 20:47:47 829

原创 Maven——2,Maven的pom.xml文件下标签说明

根标签下的基本配置信息<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache...

2018-08-01 20:35:40 356

原创 Maven——1,Eclipse中搭建Maven环境

Maven的仓库 类型 描述 中央仓库 提供所有jar包下载地址:http://mvnrepository.com/ 本地仓库 你在中央仓库里下载好的jar包所保存的文件夹,一般是本地文件夹 私服 相当于一个大型的本地仓库,规模庞大的公司里会有自己的私服,局域网内使用,避免一些不允许联网的情况下使用maven仓库Windows配置...

2018-08-01 20:13:46 174

原创 1.5-Spring 数据库操作

JDBC 框架 SQL 的存储过程 编程式事务管理 声明式事务管理 maven仓库的配置<properties> <spring-version>4.3.17.RELEASE</spring-version> </properties> <!-- spring jdbc的依赖包 --> ...

2018-07-29 15:56:05 174

原创 1.4-Spring 框架的 AOP

面向方面的编程(AOP) maven配置:<properties> <spring-version>4.3.17.RELEASE</spring-version> </properties> <!--spring核心依赖 --> <!-- spring-context --&gt...

2018-07-29 15:15:57 94

原创 1.3-Spring 基于注解的配置

1,从 Spring 2.5 开始就可以使用注解来配置依赖注入 2,关键字<context:annotation-config/> 注解 描述 @Required 注解应用于 bean 属性的 set 方法 @Autowired 注解可以应用到 bean 属性的 set 方法、非 setter 方法、构造函数、属性 @Qualifie...

2018-07-29 14:49:15 117

原创 1.2-Spring Beans 自动装配

自动装配 ‘byName’关键字autowire=”byName”public class Test1{ private Test2 test2; private String name; //省略get/set方法 public void check(){ test2.check(); }}public class Test2...

2018-07-29 13:08:11 123

原创 1.1-Spring 依赖注入

构造函数的依赖注入关键字:constructor-arg bean.xml中使用constructor-arg指向某个定义的bean,可以直接传递给构造函数public class Test1 { private Test2 test2; private int int1; private String str1; public Test1 (Test2 test...

2018-07-29 12:48:46 237

原创 1.0-Spring IoC 容器

1,Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件 2,Spring IoC 容器利用 Java 的 POJO 类和配置元数据来生成完全配置和可执行的系统或应用程序 3,配置元数据可以通过 XML,Java 注释或 Java 代码来表示BeanFactory 容器(已过时)XmlBeanFactory factory = new XmlBeanFactory ...

2018-07-29 12:09:50 98

原创 android MVVM开发框架——(4)DataBinding绑定view自定义属性

通常情况下我们会自定义标签来自定义view的属性供我们自己使用,但是如何在databinding中添加自定义属性呢? 我们来看看1,在xml中定义属性<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http

2017-10-31 22:14:53 1651

原创 android MVVM开发框架——(3)DataBinding 应用于RecyclerView

android MVVM开发框架——(1)DataBinding 基础应用android MVVM开发框架——(2)DataBinding 应用于ListView如果你对mvvm或者databinding不太熟悉的,建议先去看看前两篇博文

2017-10-31 21:25:45 3697 1

原创 android MVVM开发框架——(2)DataBinding 应用于ListView

android MVVM开发框架——(1)DataBinding 基础应用 附上mvvm中databinding的基本应用链接,只有找到了基本用法才能继续进阶

2017-10-31 20:29:35 3377

原创 android MVVM开发框架——(1)DataBinding 基础应用

概述Model :基本业务逻辑 View :视图内容 ViewModel: 将前面两者联系在一起的对象作用它通过双向绑定(松耦合)解决了Model与View联系比较紧密的问题。 mvvm的双向绑定有一定的局限性,后面会仔细讲到。配置android 官方早在Android Studio 1.3、Android Gradle插件1.5之后默认添加了,只需要在项目的build.gradle中配置:a

2017-10-31 20:20:52 889

原创 android 自定义控件自定义属性

我们在自定义控件的时候必不可少要去自定义一些属性,使这些自定义的属性能够在xml中赋值然后供我们使用。如何去自定义属性? 1,定义attrs.xml文件 2,在布局文件中标注、赋值 3,在自定义控件中获取、使用 4,测试定义

2017-10-30 22:17:00 582

原创 android https——okhttp实现https请求

定义: HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer 中文含义为“超文本传输协议在安全加密字层” 简单来说就是加密数据传输和安全连接。https和http有什么区别 在HTTP的之下加入了SSL (Secure Socket Layer),安全的基础就靠SSL。 SSL位于TCP/IP和HTTP协议之间https与

2017-10-23 18:41:54 7964

原创 android 五种存储方式——Http

android的五种存储方式分别是: 1,SharedPreferences 2,file 3,sqlite 4,contentproviter 5,httpHttphttp协议:应用层协议,并且http协议是基于tcp连接的,主要解决的是如何包装协议的tcp协议:运输层协议,通常也叫做tcp/ip协议,主要解决数据如何在网络中传输udp协议:运输层协议,用户数据报协议,不可靠的

2017-10-20 20:58:55 700

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