
Android
文章平均质量分 88
Android_Developer_M
android学习之路
展开
-
Android 编译插桩操纵字节码
自定义 Gradle 插件、Transform API 的使用、ASM 的使用原创 2023-09-27 20:57:36 · 624 阅读 · 0 评论 -
Android APP Bundle
使用 Play 核心库,您的应用日后可以请求将这些模块下载为动态功能 APK。通过 Dynamic Delivery,Google Play 只会将该模块的代码和资源提供给设备。App bundle 与 APK 的不同之处在于,您无法将其部署到设备。相反,它是一种上传格式,可将您应用的所有经过编译的代码和资源都包含在一个编译工件中。因此,在您上传已签名的 app bundle 后,Google...原创 2020-03-18 17:02:11 · 337 阅读 · 0 评论 -
Android插件化 免安装加载Activity
接上篇https://blog.youkuaiyun.com/j18874964028sss/article/details/104860086Plugin端需要被启动的PluginActivitypublic class PluginActivity extends AppCompatActivity { @Override protected void onCreate(Bundl...原创 2020-03-15 21:11:58 · 263 阅读 · 0 评论 -
Android插件化 类加载器DexClassLoader
方式一:从已安装的apk中读取,必须要有一个activity,且需要配置ACTION。利用这种方式获取插件信息,然后来构建classLoader加载类。插件APP代码:AndroidManifest.xml<intent-filter> <action android:name="com.jiangshuai.pluginone"/></in...原创 2020-03-14 14:37:20 · 463 阅读 · 0 评论 -
Android gradle命令集
查看所有的projectthis.getProjects()def getProjects() { println '-----------------------' println 'projects' println '-----------------------' this.getAllprojects().eachWithIndex { Projec...原创 2020-01-20 15:37:13 · 337 阅读 · 0 评论 -
自定义Gradle Plugin插件
new 'Android Library'model : 我取名为pluginone 修改pluginone model的build.gradle文件apply plugin: 'groovy'apply plugin: 'maven'dependencies{ // gradle sdk implementation gradleApi() // groov...原创 2020-01-15 17:45:31 · 345 阅读 · 0 评论 -
插件热修复技术
资料:https://zhuanlan.zhihu.com/p/33017826原创 2020-01-15 15:15:18 · 128 阅读 · 0 评论 -
Android Flutter Dialog笔记
void main() => runApp(MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: Theme...转载 2020-01-12 00:32:20 · 407 阅读 · 0 评论 -
RXJava记录
1、单例参考写法:public static RxBus getRxBus() { if (rxBus == null) { synchronized (RxBus.class) { if(rxBus == null) { rxBus = new RxBus(); } }...转载 2020-01-10 14:58:16 · 185 阅读 · 0 评论 -
webview
Cache-Control与 Last-Modified 一起使用;Expires与 Etag一起使用;没有更新回包304,有更新回包200参考:https://blog.youkuaiyun.com/carson_ho/article/details/71402764https://juejin.im/entry/58ba3302570c350062124f68https://blog.csdn....转载 2019-01-07 21:04:01 · 248 阅读 · 0 评论 -
Handler机制详细解
本文主要从Handle、Looper、Message、MessageQueue这四个方面进行讲述。一、首先看一下Message源码1、Message的成员变量有: public int what; public int arg1; public int arg2; public Object obj; public Messenge...原创 2019-01-12 18:43:36 · 397 阅读 · 1 评论 -
webview截取全屏
/storage/emulated/0/ 这个路径表达的就是sd卡路径。可以用 adb shell去查看手机某路径下文件情况 cd /storage/emulated/0/Android/data/com.example.jiangshuai.scropimage/cachels全屏截取webview,并将图片保存到本地package com.example.jiangshua...转载 2018-12-22 19:43:49 · 453 阅读 · 0 评论 -
Android view
package com.example.jiangshuai.testview;import android.app.Activity;import android.content.res.Resources;import android.graphics.Rect;import android.os.Bundle;import android.support.v7.app.AppC...原创 2018-11-04 19:09:17 · 210 阅读 · 0 评论 -
OKHttp源码详解
首先大概看一下整个流程图:接下来讲解的思路将根据这个流程来。一、创建一个OkHttpClient对象: OkHttpClient client = new OkHttpClient();二、怎么不见Builder呢?看下OkHttpClient的构造函数,其中new Builder(),这里采用了默认配置。OkHttpClient.Builder成员有很多转载 2017-11-30 15:39:15 · 399 阅读 · 1 评论 -
秋招Android面试总结:美团、携程、百度、腾讯、长银58
今年秋招自己分别先后拿下:携程、长银58消费金融、美团的offer。同时也参加过百度、腾讯、好未来、拼多多、cvte的面试,在这里总结一下,希望对后来之人有帮助。如果你正准备秋招或者春招可以参考以下三点:坚持、基础、能吹的项目。美团一面:最好的单例模式线程同步实现方式,介绍synchronized与volatile的具体区别APP瘦身你从哪里方面考虑设计模式快速排序美团原创 2017-11-20 15:08:35 · 4322 阅读 · 1 评论 -
dex文件与class文件如何生成
一、dex文件与class文件如何生成Class文件:可以被JVM所识别的文件。记录一个类文件的所有信息。文件结构:a)一种8位字节的二进制流文件。 b)各个数据按顺序紧密的排列,无间隙。 c)每个类或接口都单独占据一个class文件。Dex文件:可以被DVM所识别的文件。记录整个工程所有类的信息。文件结构:a)一种8位字节的二进制流文件。 b)各个数据按顺序紧密原创 2017-11-14 20:04:26 · 1423 阅读 · 1 评论 -
tinker热修复
Tinker的集成总结:首先在我们的gradle文件中去配置一个注解库,一个核心的SDK库,有了这两个库,我们还需要定义一个Tinkmanager对tinker API层做一层封装。有了这个Tinkmanager以后,我们第三步定义了一个CustomTinkerLike,这个对象继承于ApplicationLinke,在这个类中完成tinker的初始化,而为什么需要这个ApplicationLik原创 2017-11-14 20:09:01 · 283 阅读 · 0 评论 -
插件化易混淆概念
原创 2017-11-14 20:37:41 · 302 阅读 · 0 评论 -
MVP模式原理分析 以及两个实例带你飞
这里介绍mvp模式的特点与优点,为了方便理解 举了用mvp模式实现的两个例子,例一偏向简单用于原理说明,例二应用现在比较火的Retrofit和RXJava进行网络数据请求的mvp模式实例。原创 2017-04-27 19:52:44 · 4784 阅读 · 0 评论 -
Android进程间的通信:Mesenger、aidl
android进程间的通信方式Messenger、AIDL方式原创 2017-05-06 22:23:50 · 402 阅读 · 0 评论 -
应用SharedPreferences在进程之间通信时你会遇到的问题
应用SharedPreferences在进程之间通信时你会遇到的问题出现这样一个问题:先启动主线程并获取SharedPreferences对象,然后对值进行修改,然后再启动其它进程并获取SharedPreferences对象,能够获取修改后的值,但此时如果对此值进行修改,均不能对其他进程产生作用。必须等到进程重启或者app重启才能与其他进程进行数据同步。原因:只有在创建SharedPr原创 2017-05-17 11:52:31 · 1597 阅读 · 0 评论 -
AIDL实现Android进程间的通信
今天来详讲一种Android进程通信的方式:AIDLAIDL:android接口定义语言AIDL的作用:首先我们知道,每个进程都运行在自己的虚拟机中,拥有自己独立的内存地址空间,在自己的内存空间操作自己的数据,但如果想跟其它内存空间通信时。这时就涉及到进程之间的通信,aidl就是它们通信的桥梁之一,它制定自己的规则,只要按照它的规则来就可以实现进程之间的通信。为什么选用AIDL来进行进原创 2017-05-07 20:39:39 · 276 阅读 · 0 评论 -
HashMap详解
HashMap是一个数组链表结构,从源码中可以看出,每次新建一个HashMap时,都会初始化一个table数组。Table数组的元素为Entry节点。Entry为HashMap的内部类,它包含了键key、值value、下一个节点next,以及hash值。Put源码:public V put(K key, V value) { //当key为null,调用putForNull原创 2017-05-17 17:31:19 · 216 阅读 · 0 评论 -
java泛型
一、基本概念java泛型出现原因:为了解决类型转换的问题。就是说所操作的数据类型被指定为一个参数,在用到的时再指定为具体类型。泛型可以用在:类、接口、方法中。(泛型类,泛型接口,泛型方法)简单概念:整个成为ArrayList泛型类型ArrayList中的 E称为类型变量或者类型参数整个ArrayList 称为参数化的类型二、泛型的使用泛型类的转载 2017-06-02 23:34:51 · 479 阅读 · 0 评论 -
RxJava实例及原理分析,以及RXJAVA2
RXJava学习总结,后续会继续更新这篇文章。转载 2017-04-21 21:00:39 · 520 阅读 · 0 评论 -
drawable图片资源处理
结论:图片资源尽量放在高密度的文件夹下,这样可以节省图片的内存开支,而UI在设计图片的时候也应该尽量面向高密度的设备来进行设计。在开发过程当中,当项目越来越大,有的时候加载一张hdpi下的图片程序会直接出现OOM奔溃了,但如果将这张图片放到xhdpi或者xxhdpi目录下就不会奔溃了,其实就是这个道理。我们知道在Android目录下有6个存放图片的文件夹,分别是:ldpi , mdpi ,转载 2017-07-08 20:15:08 · 1746 阅读 · 0 评论 -
主线程中延时启动dialog
主线程中延时启动dialog错误的: new Thread(new Runnable() { public void run() { try { Thread.sleep(5000); showToMemberDialog();原创 2017-07-18 11:30:30 · 787 阅读 · 0 评论 -
客户端与服务端长连接Mina框架讲解
推送的实现方式:一:客户端不断的查询服务器,检索新内容,也就是所谓的pull 或者轮询方式。太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。二:服务器又新内容时,发送一条类似短信的信令给客户端,客户端收到后从服务器中下载新内容,也就是SMS的推送方式。问题是这个方案的成本相对比较高。三:客户端和服务器之间维持一个TCP/IP长连接,服务器向客户端push。原创 2017-10-27 07:39:33 · 2823 阅读 · 1 评论 -
ImageLoader原理分析
ImageLoader的实现:· 图片压缩· 内存缓存· 磁盘缓存· 网络拉取图片· 图片的同步加载· 图片的异步处理一、图片压缩功能的实现:通过采用BitmapFactory.Options来压缩图片,主要是用到了它的inSampleSize参数,当inSampleSize为1时,采样后的图片大小为原始图片大小;当inSampleSize大于1时,比如为2,那么采原创 2017-10-20 21:39:37 · 1032 阅读 · 0 评论 -
RXjava讲解
RXJava实现过程简介:用两根水管代替观察者和被观察者 上面一根水管为事件产生的水管,叫它上游吧,下面一根水管为事件接收的水管叫它下游吧。两根水管通过一定的方式连接起来,使得上游每产生一个事件,下游就能收到该事件。这里的上游和下游就分别对应着RxJava中的Observable和Observer,它们之间的连接就对应着subscribe()。 RXJava大概实现原理原创 2017-10-17 10:03:59 · 330 阅读 · 0 评论 -
Android的classLoader
Android的classLoader1、BootClassLoader和java中的boostrap相似 用来加载Android framework层class字节码文件2、PathClassLoader和java中的APPclassLoader相似,已经安装到系统的apk文件中的class文件。3、DexClassLoader和java中customclassLoader相似,原创 2017-11-14 20:07:08 · 385 阅读 · 1 评论 -
Andfix热修复
Andfix的patch文件生成过程:1、在gradle文件中去引入AndFix的热修复模块。2、对Andfix所有的API做出封装,封装采用单例模式。封装完以后再application类中完成AndFix的一个初始化。其中我们会调用PatchManager的2个方法。分别是init()方法、loadPatch()方法。3、利用apk新旧包,使用apkpatch命令生成apatch包。原创 2017-11-14 20:08:07 · 363 阅读 · 0 评论 -
small插件
small插件化集成:步骤:1、在gradle中先配置一些参数。2、在宿主工程中初始化我们的small,在application中初始化。3、以指定的规范来插件插件化,遵守命名规范,模块名需要以app开头,包名中需要包含app。因为Small会根据包名对插件进行归类。4、编译创建好的插件,在命令行中输入gradlewbuildBundle命令,如果没有异常的话我们的插件和宿原创 2017-11-14 20:10:42 · 425 阅读 · 0 评论 -
在android中service启动异常
记录一下开发中遇到的问题:用intent开启一个service时Intent intent = new Intent("com.ryg.MessengerService.launch");bindService(intent, mConnection, Context.BIND_AUTO_CREATE);出现如下错误:Caused by: java.lang.Illega原创 2017-05-06 21:22:07 · 997 阅读 · 0 评论