Android进阶
文章平均质量分 88
guolipeng_network
谁都可以有梦想,而努力是让梦想变成现实的必经之路!
展开
-
源码分析 Service 的启动和绑定过程
这里写自定义目录标题前言Service的启动过程Service的绑定过程前言Service 分为两种工作状态,一种是启动状态,主要用于执行后台计算;一种是绑定状态,主要用于和其他组件进行交互。Service的这两种状态是可以共存的,即 Service 即可以处于启动状态,也可以同时处于绑定状态。通过Context的 startService 可以启动一个Service启动Service:...原创 2020-04-27 22:53:09 · 428 阅读 · 0 评论 -
Android中对于Java 反射(Reflect)语法的封装类
最近在研究Android插件化,通篇都在谈Hook,当然都是依赖Java的反射技术,然而反射获取构造函数,创建类的实例对象,反射调用方法,反射字段以及对泛型类的反射语法比较繁琐,步骤较多,开发成本较高,于是就自己封装了一个反射相关的工具类,方便在开发过程中对反射的使用。package com.example.guolipeng.demo.utils;import java.lang.refl...原创 2018-12-03 17:25:08 · 911 阅读 · 0 评论 -
Android 中的 IPC 方式二:使用文件共享
前言共享文件也是一种不错的进程间通信方式,两个进程通过读/写同一个文件来交换数据,比如 A 进程把数据写入文件,B 进程通过读取这个文件来获取数据。我们知道,在 Windows 上,一个文件如果被加了排斥锁将会导致其他线程无法对其进行其他访问,包括读和写,而由于 Android 系统基于 Linux,使得其并发读/写文件可以没有限制的进行,甚至两个线程可以同时对一个文件进行写操作都是允许的,尽管这可原创 2017-10-11 16:46:25 · 535 阅读 · 0 评论 -
Android 中的 IPC 方式一:使用 Bundle
我们知道四大组件中的三大组件(Activity、Service、BroadcastReceiver)都是支持在 Intent 中传递 Bundle 数据的,由于 Bundle 实现了 Parcelable 接口,所以它可以方便地在不同的进程间传输。原创 2017-10-11 15:02:54 · 493 阅读 · 0 评论 -
Android IPC基础概念之(序列化)介绍
前言当我们需要通过 Intent 或 Binder 传输数据时需要先把数据或者要传输的对象完成序列化操作, 这时就需要使用 Serializable 或者 Parcelable。还有的时候我们需要把对象持久化到存储设备上或者通过网络传输给其他客户端,这时候也需要使用 Serializable 来完成对象的持久化。Serializable 接口Serializable 是 Java 提供的一个序列化接原创 2017-10-09 17:24:37 · 302 阅读 · 0 评论 -
Android IPC简介之(多进程模式)初识
前言IPC是 Inter-Process Communication 的缩写,含义为 进程间通信 或者跨进程通信,是指两个进程之间进行数据交换的过程。线程vs进程线程:线程是CPU调度的最小单元,同时线程是一种有限的系统资源。进程:进程一般指一个执行单元,在 PC 和移动设备上通常指一个程序或者一个应用。程序、进程、线程关系通常来讲,一个程序就是一个进程(开启了多进程的程序除外),一个进程可以包含多原创 2017-09-21 17:58:45 · 330 阅读 · 0 评论 -
通过 AIDL 分析 Binder 的工作机制
前言简单来讲,Binder 是 Android 中的一个类,它实现了 IBinder 接口。从 IPC 角度来讲,Binder 是 Android 中的一种跨进程通信方式,可以将 Binder 理解为一种虚拟的物理设备,它的设备驱动是 /dev/binder,该通信方式在 Linux 中并没有。原创 2017-09-11 15:38:42 · 457 阅读 · 0 评论 -
Android Studio 3.0全新时代:带来的一些新功能
前言Android Studio从3.0版本新增了许多功能,当然首当其冲就是从3.0版本新增了对 Kotlin 开发语言的支持,除此之外还有其他一些新功能,例如:Android Profiler (其中包含了: CPU Profiler、Memory Profiler、Network Profiler ),APK Debugger,Device File Explorer,Java 8 Langua原创 2017-07-06 19:04:12 · 26430 阅读 · 6 评论 -
带你彻底明白 Android Studio 打包混淆
在使用Android Studio混淆打包时,该IDE自身集成了Java语言的ProGuard作为压缩,优化和混淆工具,配合Gradle构建工具使用很简单。只需要在工程应用目录的gradle文件中设置minifyEnabled为true即可。然后我们就可以到proguard-rules.pro文件中加入我们的混淆规则了。原创 2017-07-06 15:20:18 · 24855 阅读 · 8 评论 -
创建定时任务—Timer与Alarm
Android中的定时任务一般有两种实现方式,一种是使用Java API中提供的 Timer 类,一种是使用Android的 Alarm 机制。 这两种方式在多数情况下都能实现类似的效果,但是 Timer 有一个明显的短板,就是不太是用于那些需要长期在后台运行的定时任务。原创 2017-06-12 18:18:22 · 1057 阅读 · 0 评论 -
定制自己的Log日志工具—轻松控制log打印
在写项目时为了方便调试,往往会在代码的很多地方都打印大量的日志。最近项目基本完成了,这时却有一个非常让人头疼的问题,就是之前用于调试的那些日志在项目上线之后仍旧会照常打印,这样不仅会降低程序的运行效率,还有可能将一些重要的数据泄露出去。 为了不让项目上线后继续打印这些日志,就有人会想到干脆把之前的日志输出都删掉或者注释掉吧。但是如果是很大的项目,这么做恐怕谁也受不了吧,而且后期版本迭代过程中还原创 2017-06-12 15:30:29 · 1038 阅读 · 0 评论 -
为什么Dialog不能用Application的Context
为什么Dialog不能用Application的Context“BadTokenException: Unable to add window -- token null is not for an application”,发生一个BadTokenException的异常,不能添加Window。转载 2017-06-21 02:28:51 · 439 阅读 · 0 评论 -
Fragment构造函数打包时的踩坑:should provide a default constructor
打包编译报错 This fragment should provide a default constructor (a public constructor with no arguments),Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) ins原创 2017-06-21 01:51:44 · 1702 阅读 · 0 评论 -
通过Intent打开相关的设置页面
打开设置的主界面,或直接打开某一个具体的设置页面,例如:跳转到网络设置页面,或者直接跳转到GPS设置的页面,而不是打开设置等等原创 2017-06-20 19:28:32 · 1327 阅读 · 0 评论