自定义博客皮肤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开发

淡泊以明志,宁静以致远

  • 博客(50)
  • 收藏
  • 关注

转载 Android消息机制Message消息池

这篇文章主要说下Android在实现Message类的时候使用的一个所谓的消息池的问题。我们在使用Android的消息循环时,一般按照下面的方式使用,为了使线程具有消息循环如下://实现自己的Handler类,重写handlerMessage()方法[java] view plain copyprivate class MyHandl

2016-12-29 16:02:47 594

转载 Android中的Message类以及Java对象池的实现

在Android的android.os.Message类的文档中有这么一句话:While the constructor of Message is public, the best way to get one of these is to call Message.obtain() or one of the Handler.obtainMessage() methods, which

2016-12-29 16:00:28 724

转载 Android源码分析之Message

在Android的开发中,我们经常用到Handler.postXXX方法,或者View.postXXX方法,用来在下一次looper到来时执行。我是那样的人,什么事情最好能够知道下内部实现机理是什么,否则我在用它的时候可能会觉得不爽,或者说不自然,不太愿意去用。典型例子就是我始终不太愿意用Android引入的SparseArray,而是一直坚持Java的HashMap,直到我自己读

2016-12-29 14:50:53 351

转载 Android源码解析Handler系列第(五)篇 ---HandlerThread你用过吗?

Handler这个系列总共有5篇,这是最后一篇了。前面三篇博客,我们从源码的层面将Handler消息机制梳理了一遍,第四篇站在源码层之上回顾以前学习时候困惑的一些问题。OK,开始飙车了,学习HandlerThread,如果你还没有看过我之前的四篇文章,建议去了解,只有深入了解的东西,才能被记住。Android源码解析Handler系列第(一)篇 --- Message全局池Android源

2016-12-29 14:20:41 336

转载 Android源码解析Handler系列第(四)篇 --- 打破Handler那些困惑事儿

Handler这个总共有4篇,这是最后一篇,前面三篇博客,我们从源码的层面将Handler消息机制梳理了一遍,现在回头再看当时作为小白使用Hander所遇到的一些问题,显然,这些问题基本都可以做一个解释了。Android源码解析Handler系列第(一)篇 --- Message全局池Android源码解析Handler系列第(二)篇 --- ThreadLocal详解Android源

2016-12-29 14:19:27 343

转载 Android源码解析Handler系列第(三)篇---深入了解Android的消息机制

Android的消息机制我觉得是每一个弄Android开发的人都要弄懂得问题,也有很多人对它进行研究,Android的消息机制的重要性不强调,但是觉得自己对Android的消息机制了解不深刻,所以决定深入源码,写下三篇博客以记之。因为Message全局池和ThreadLocal对Android的消息机制理解很重要,附上前两篇的博客地址。Android源码解析Handler系列第(一)篇 ---

2016-12-29 14:18:49 379

转载 Android源码解析Handler系列第(二)篇--- ThreadLocal详解

在上篇文章Android源码解析Handler系列第(一)篇说了Message的内部维持的全局池机制。这一篇仍然是准备知识,因为在Handler中有ThreadLocal的身影,大家知道,Handler创建的时候会采用当前线程的Looper来构造消息循环系统,那么Handler内部如何获取到当前线程的Looper呢?这就要使用ThreadLocal了,ThreadLocal可以在不同的线程之中互不

2016-12-29 14:18:14 478

转载 Android源码解析Handler系列第(一)篇 --- Message全局池

1、UI不能在子线程中更新是个伪命题我们常说UI需要在主线程中进行更新,子线程就不能更新UI吗?不是,我们并不是说不能在子线程中更新UI,而是说UI必须要在它的创建线程中进行更新,比如下面一段代码在子线程更新UI就不会报错。 new Thread(new Runnable() { @Override public void run()

2016-12-29 14:17:42 458

转载 Android Binder设计与实现 - 设计篇

关键词Binder Android IPC Linux 内核 驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Bin

2016-12-28 19:17:57 296

转载 Android Binder机制浅析

摘要Binder是Android中一个很重要且很复杂的概念,它在系统的整体运作中发挥着极其重要的作用,不过本文并不打算从深层次分析Binder机制,有两点原因:1是目前网上已经有2篇很好的文章了,2是对Binder机制进行深入底层乃至驱动的分析这一过程相当困难且相当耗时,因此并不适合重复造轮子。本文的角度是对Android的Binder机制从整体和概念上进行分析,能够让大家很快明白到底什么

2016-12-28 19:14:58 289

转载 学习AIDL,这一篇文章就够了

1、概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。是的,首先我们知道的第一点就是:AIDL是一种语言。既然是一种语言,那么相应的就很自然的衍生出了一些问题:为什么要设计出这么一门语言?它有哪些语法?我们应该如何使用它?再深入一点,我们可以思考,我们是如何通过它来达到我们的目的的?更深入一点

2016-12-28 18:29:41 491

转载 Binder学习总结_native(1)

这几天一直在看binder的结构,感叹这样天才的设计。现在只研究到binder的native框架,在IPCThreadState以下,真正的driver和数据交换还需要进一步研究。在此记录一些目前的体会。1.IInterface的作用个人感觉,这个IInterface严格上讲,并不是Binder这个框架的一部分。它的作用是提供了一个common的方式,可以将IBinder与Se

2016-12-27 19:15:53 562

转载 Binder机制分析(3)—— 实现自己的Service

本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。1. 到这里,我们应该已经理解了Android的Binder机制,当需要自己实现一个核心服务时,应该注意哪些问题呢?    1)核心服务通常在独立的进程里执行。    2)必须提供IBinder 接口,让应用程序可以跨进程绑定和呼叫。    3)因为共享,所以必须确保多线程安全(Thread-safe)。

2016-12-27 19:14:50 317

转载 Binder机制分析(2)——从MediaService中看Binder的实现和使用(2)

本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。1. 如果我们要使用MediaPlayerService服务,那么MediaPlayerService客户端就需要与MediaPlayerService(即BnMediaPlayerService)交互。交互的过程需要建立一个循环,然后读写Binder设备。注意,在BnMediaPlayerService中并没有

2016-12-27 19:13:03 300

转载 Binder机制分析(2)——从MediaService中看Binder的实现和使用(1)

本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。1. MediaService入口, 获取ServiceManager下面我们就从MediaService的源码入手进行分析,首先,MediaService的入口函数的实现位于“framework\base\media\mediaServer\main_mediaserver.cpp”。    int m

2016-12-27 19:11:49 373

转载 Binder机制分析(1)——Binder结构简介

本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。一。Binder 介绍Binder机制实际上就是一个类似于C/S的构架:客户端进程要想与服务端进程通信就必须在客户端建立一个服务端进程代理对象,然后将请求发送到代理对象上;代理对象通过Binder驱动将请求转发给服务端进程处理;当处理完成之后,再次通过Binder驱动传回给代理对象,客户端从代理对象获取响应信息。

2016-12-27 19:10:24 431

转载 Android Messenger源码分析

我们直接看源码:[java] view plain copy /**  * Reference to a Handler, which others can use to send messages to it.  * This allows for the implementation of message-based 

2016-12-27 19:07:19 461

转载 Android应用进程间通信之Messenger信使使用及源码浅析

1 背景这个知识点是个low货,刚开始其实想在之前一篇文章《Android异步消息处理机制详解及源码分析》一文中作为一个知识点分析的,但是想了又想又觉得该放在后面进程间通信分析时再分析。然并卵,还是单独拿出来写一篇分析一下吧。提到Message和Handler其实大家都很熟悉,但是说到Messenger估计有些人还是不太常用的,更有甚者都能把Messenger拼写错误为Messag

2016-12-27 19:06:12 342

转载 Android:学习AIDL,这一篇文章就够了(下)

前言上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识。强烈建议大家在看这篇博文之前先看一下上一篇博文:Android:学习AIDL,这一篇文章就够了(上)注:文中所有代码均源自上一篇博文中的例子。 另:在看这篇博文之前,建议先将上一篇博文中的代

2016-12-27 19:03:38 502

转载 Android:学习AIDL,这一篇文章就够了(上)

前言在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了。不过又转念一想,我辈年轻人自当有一种一往无前的锐气,标题大气一点岂不更好?并且大家都是文明人,总归更多的是理解与补充而不是侮辱与谩骂?所以最终还是厚颜用了这么一个不怎么有耻的标题。好了,接下来进入正题,

2016-12-27 19:02:02 421

转载 你真的了解AsyncTask?

虽说现在做网络请求有了Volley全家桶和OkHttp这样好用的库,但是在处理其他后台任务以及与UI交互上,还是需要用到AsyncTask。但是你真的了解AsyncTask吗?AsyncTask的实现几经修改,因此在不同版本的android系统上表现各异;我相信,任何一个用户量上千万的产品绝对不会在代码里面使用系统原生的AsynTask,因为它蛋疼的兼容性以及极高的崩溃率实在让人不敢恭维。

2016-12-26 18:33:53 461 1

转载 Android AsyncTask完全解析,带你从源码的角度彻底理解

转自:http://blog.csdn.net/guolin_blog/article/details/11711405我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制。之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴趣的朋友可以参考 Android Handler、Mes

2016-12-26 18:23:38 436

原创 Handler post(Runnable runnable)和sendMessage(Message msg)的区别比较

先上Handler的源码看一下:[java] view plain copy/**      * Default constructor associates this handler with the {@link Looper} for the      * current thread.      *      * If t

2016-12-23 18:32:13 2442

转载 Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系

很多人面试肯定都被问到过,请问Android中的Looper , Handler , Message有什么关系?本篇博客目的首先为大家从源码角度介绍3者关系,然后给出一个容易记忆的结论。1、 概述Handler 、 Looper 、Message 这三者都与Android异步消息处理线程相关的概念。那么什么叫异步消息处理线程呢?异步消息处理线程启动后会进入一个无限的循环体之中,每循

2016-12-23 14:16:46 531

转载 Android中的onWindowFocusChanged()方法详解

Android中获取手机屏幕的高度和宽度,我们知道在onCreate方法中获取到的值都是为0的,有人说可以在onClick方法中获取值,这个也是个方法 ,但在onWindowFocusChanged方法中可以直接获取到,而且有的时候场景的需要,就不得不在Activity渲染完成后立马获取值,这时候onWindowFocusChanged()方法就用到实处了,类似的有PopupWindow的显示

2016-12-20 18:26:26 2246 2

转载 关于onPostCreate——Activity彻底运行起来之后的回调

今天偶然间发现了一个貌似很有用处的接口protected void onPostCreate (Bundle savedInstanceState)Since: API Level 1Called when activity start-up is complete (after onStart() and onRestoreInstanceState(Bund

2016-12-20 17:49:50 1204

转载 Activitylifecyclecallbacks使用

Application通过ActivityLifecycleCallbacks使用接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。 ActivityLifecycleCallbacks接口回调可以简化监测Activity的生命周期事件,在一个类中作统一处理。 ActivityLifecycleCallbacks使用要求API 14+ (Android 4.0+)。

2016-12-20 13:43:01 717

转载 ActivityLifecycleCallbacks使用方法初探

ActivityLifecycleCallbacks是什么?Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。为什么用ActivityLifecycleCallbacks?以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理:@Overr

2016-12-20 11:51:27 550

转载 Android:onNewIntent()触发机制及注意事项

一、onNewIntent()在IntentActivity中重写下列方法:onCreate onStart onRestart  onResume  onPause onStop onDestroy  onNewIntent1、其他应用发Intent,执行下列方法:onCreateonStartonResume发Intent的方法:Uri uri = Uri.pa

2016-12-15 11:54:06 448

转载 2016年未,腾讯,百度,华为,搜狗和滴滴面试题汇总

前言:前一段时间和大家交流,据反馈现在Android岗位也没有以前那么多了,当然这不意味着饱和,只是市场更趋于合理一些,就像深圳房价一样,以前破天慌的涨,新政出来后,房价慢慢趋向合理一样。Android还有有很多机会的。最近结合一些面试的同学(包含社招和校招),整理了下一些面试题目。实际上,很多面试题网上都能找得到。很多人说,完全可以背答案,我不这么看。背的和实际开发遇到的,说出来是不一样的。举例

2016-12-12 16:35:54 732

转载 源码分析微信热修复框架Tinker的类加载过程 .

最近在设计一个安卓热修复的完整方案, 这两天终于有零零散散的时间可以考虑下如何选型了.之前项目中用过阿里的基于"安卓神器"Xposed框架的Dexposed,非常惊艳.但毕竟也有一年没更新了,很多东西都被后起之秀比如AndFix超越了~ 而且由于之前项目的特殊性,应用只安装在4.1和4.4系统上,这一点神奇的避开了了Dexposed的硬伤不支持5.0+.但做普通APP就绕不开这个硬伤了.正好微

2016-12-06 18:47:41 641

转载 Android Studio的Instant Run工作原理及用法

前言看到一篇介绍Instant Run的文章,觉得蛮不错的,翻译记录一下,其中夹杂着自己的理解(原文地址),最后附上Install Run的使用方法。(本文图片出处)tips:文中所有链接地址都要翻墙Instant RunInstant Run,是android studio2.0新增的一个运行机制,在你编码开发、测试或debug的时候,它都能显著减少你对当前应用的

2016-12-05 11:38:46 634

转载 Andfix热修复框架原理及源码解析-下篇

如果没有看过上篇的建议从上篇看起。先大概回忆下,上一篇分析了mPatchManager.init("1.0"),addPatch()方法。还有通过分析打补丁工具,了解补丁文件是怎么生成的。下面就来讲讲我们如何去读它。思绪回到Application的loadPatch()方法。 这个方法就是遍历mPatchs,就是上篇介绍的存储patch的一个集合。根据补丁名找到对应的类

2016-12-02 18:20:51 622

转载 Andfix热修复框架原理及源码解析-上篇

1.不知道如何使用的同学,建议看看我上一篇写的介绍热补丁和Andfix的使用,这样你才有一个大概的框架。通过使用Andfix,其实我们心中会有一个大概的轮廓,它的工作原理,大概就是,所谓的补丁文件,就是通过打包工具apkpatch比对新的apk和旧的apk之间的差异。然后让我们的旧包运行的时候,就加载它,把以前的一些信息替换掉。我们现在就抱着这个大方向去深入源码探个究竟!!首先看下Demo里面Ap

2016-12-02 18:20:09 539

转载 Android逆向之旅---运行时修改内存中的Dalvik指令来改变代码逻辑

一、前言最近在弄脱壳的时候发现有些加固平台的加固方式是修改了dex文件结构,然后在加载dex到内存的时候,在进行dex格式修复,从而达到了apk保护的效果,那么在dex加载到内存的时候,如何进行dex格式的修复呢?其实原理就是基于运行时修改内存中的Dalvik数据,本文就来用一个简单的例子来介绍一下如何在内存中去修改Dalvik指令代码来改变代码本生的运行逻辑。在讲解本文之前,一定要先看这篇文

2016-12-02 10:22:27 1405

转载 Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

一、前言在之前的破解过程中可以看到我们唯一离不开的一个神器那就是apktool了,这个工具多强大就不多说了,但是如果没有他我们没法涉及到后面的破解工作了,这个工具是开源的,也是使用Java语言开发的,代码相对简单,我们今天就来分析一下他的大体逻辑,注意是大体逻辑哦,因为如果要一行一行代码分析,首先觉得没必要,其次浪费时间,有了源码,谁看不懂呢。至于为什么要分析这个工具其实原因只有一个,就是我们

2016-12-02 10:20:07 751

转载 Android逆向之旅---动态方式破解apk终极篇(加固apk破解方式)

一、前言今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为:第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件现在要说的就是最后一篇了,如何应对Android中一些加固apk安全防护,在之前的两篇破解文章中,我们可以看到一个是针对于Java层的破解,一个是针对于native层的破解,还没有涉及到apk的加固,那么今天就要来介绍一下

2016-12-02 10:18:23 9498 3

转载 Android逆向之旅---Android应用的安全的攻防之战

一、前言在前两篇破解的文章中,我们介绍了如何使用动态调试来破解apk,一个是通过调试smali源码,一个是通过调试so代码来进行代码的跟踪破解,那么今天我们就这两篇文章的破解方法,来看看Android中开发应用的过程中如何对我们的应用做一层安全保护,当然现在市场中大部分的应用已经做了一些防护策略,但是没有绝对的安全,破解只是时间上的问题。所以攻破和防护是相生相克,永不停息的战争,没有绝对的安全

2016-12-02 10:15:47 553

转载 Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

一、前言今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了安全或者效率问题,会把一些重要的功能放到native层,那么这样一来,我们前篇说到的Eclipse调试smali源码就显得很无力了,因为核心的都在native层,Android中一般native层

2016-12-02 10:14:29 2282

转载 Android逆向之旅---动态方式破解apk前奏篇(Eclipse动态调试smail源码)

一、前言今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了:Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用apktool来反编译apk,得到smail源码,然后分析smail代码,采用代码注入技术来跟踪代码,然后找到关键方法进行修改,进而破解,同时还可以使用一些开源的hook框架,比如:Xposed和

2016-12-02 10:12:14 1154 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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