AsyncTask 源码分析

异步任务可以在工作线程中完成数据处理,并在主线程总更新UI,其使用简单,这里不做介绍。 我们从无参构造函数开始分析: public AsyncTask() { this((Looper) null); } /** 初始化了mHandler、mWorke...

2019-07-09 18:14:43

阅读数 5

评论数 0

Android热修复原理及实现

原理: 1、PathClassLoader只能加载系统中已经安装过的apk 2、DexClassLoader可以加载jar/apk/dex,可以从SD卡中加载未安装的apk 可以在Activity中打印 this.getClassLoader().toString() 输出就为dalvik....

2019-04-26 12:01:19

阅读数 21

评论数 0

Retrofit缓存

有网络直接从网络请求数据,没有网络则从缓存读取数据。 请求接口文件如下 public interface MyApi { @GET("/") Call<String> getTest(); } baseurl为http://...

2019-04-18 15:51:24

阅读数 84

评论数 0

android与js之间的交互

简单介绍Webview的使用 记得添加权限: <uses-permission android:name="android.permission.INTERNET"/> 方法1:加载网络地址 webView...

2019-03-13 18:27:55

阅读数 39

评论数 0

Glide源码分析(一)加载R.drawable.*

本博客写于2019.3.8,当前Glide最新版本为4.9.0 添加依赖: implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glid...

2019-03-08 11:58:46

阅读数 119

评论数 0

Android 本地广播

正常的广播是全局广播,所有的应用都可以接收到,如果我们用其发送一些数据,容易被其他应用获取,引起安全问题。其他应用也可以发送广播,被我们的应用接收,也可能导致安全问题。 所以引入了本地广播机制  使用LocalBroadcastManager来管理广播: 调用LocalBroadcastMa...

2019-02-28 17:15:29

阅读数 58

评论数 0

Android View的点击事件分发机制

三个重要的方法: dispatchTouchEvent(MotionEvent ev):用来进行事件的分发 onInterceptTouchEvent(MotionEvent ev):用来进行事件的拦截,在dispatchTouchEvent()中调用,需要注意的是View没有提供该方法 o...

2019-02-15 17:17:16

阅读数 33

评论数 0

Rxjava2切换线程原理

版本如下: implementation "io.reactivex.rxjava2:rxjava:2.2.5" implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' 建议一边看博客,一...

2019-01-11 16:48:09

阅读数 110

评论数 0

ViewStub的使用

官方文档地址:https://developer.android.com/reference/android/view/ViewStub.html <ViewStub android:id="@+id/stub" ...

2019-01-03 11:43:49

阅读数 63

评论数 0

IntentService的使用

IntentService启动的方式与Service相同,但在IntentServicezhon中会启动一个新线程来处理耗时操作从源代码中可以看出: public abstract class IntentService extends Service { public Intent...

2018-12-18 17:11:29

阅读数 20

评论数 0

使用Condition来实现等待/通知

使用Condition来实现wait()和notify() public class Main8 { public static void main(String[] args) { Lock lock = new ReentrantLock(); M...

2018-12-13 16:21:25

阅读数 28

评论数 0

JAVA同步Lock之ReentrantLock类简单使用

public class Main7 { public static void main(String[] args) { Lock lock = new ReentrantLock(); Thread7 threadA = new Thread7(lo...

2018-12-13 16:01:11

阅读数 18

评论数 0

JAVA多线程 join()方法

有时子线程中会做大量耗时运算,而主线程可能结束可能早于子线程,我们希望子线程结束后主线程再结束,我们就可使用join方法 例如原来的代码是这样的: public class Main6 { public static void main(String[] args) { ...

2018-12-13 14:43:38

阅读数 20

评论数 0

volatile关键字

public class Main3 { public static void main(String[] args) { MyRunable runable = new MyRunable(); Thread thread = new Thread(ru...

2018-12-12 17:02:17

阅读数 18

评论数 0

IPC进程间通信:AIDL

上篇文章使用了Messenger来进行进程间通信,其本质也是使用AIDL。 这次service端模拟一个图书馆,Activity模拟一位读者,读者可以查看图书馆中的图书列表,可以添加图书,当有新图书加入时通知读者(即添加Listener) 添加新进程中的service &...

2018-12-11 18:06:43

阅读数 23

评论数 0

IPC进程间通信:Messenger

新建service进程 <service android:name=".messenger.MessengerService" android:process=":remote&q...

2018-12-04 18:42:28

阅读数 30

评论数 0

Android常用跳转系统设置界面

android.provider.Settings。1.   ACTION_ACCESSIBILITY_SETTINGS :    // 跳转系统的辅助功能界面            Intent intent =  new Intent(Settings.ACTI...

2018-07-10 18:42:05

阅读数 62

评论数 0

Android DataBinid在RecyclerView上应用

如果你不了解dataBinding,请看我的另一篇文章Activity布局文件如下,如果看过我的上一篇文章应该可以看懂这里的布局文件<?xml version="1.0" encoding="utf-8"...

2018-07-03 15:07:19

阅读数 116

评论数 0

Android dataBinding

使用DataBinding需要Android Gradle插件的支持,版本至少在1.5以上,需要的Android studio的版本在1.3以上。在Android Studio中使用需要在Module下的build.gradle中添加android { ... dataBindin...

2018-07-03 11:52:28

阅读数 98

评论数 0

android 加密

public static String md5(String string) { if (TextUtils.isEmpty(string)) { return ""; } MessageDigest md5 = nul...

2018-07-03 10:28:58

阅读数 46

评论数 0

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