5 王小北爱搬砖

尚未进行身份认证

暂无相关描述

等级
博文 35
排名 9w+

从应用角度看Android源码 - Thread 深入剖析

最近面试被问了Thread与runable的原理有什么不同,本人当时回答的是没什么不同,都是开一个新线程而已,面试官也没有给我个正面反馈告诉我到底有什么不同,索性趁着这个热乎劲我就去深入剖析一下这个Thread。首先写一个例子看看Thread和runable分别是怎么用的。(查看源码)先添加一个Thread的子类,并重新run方法即可packagecom.example.threadd...

2018-09-01 14:25:58

从应用角度看Android源码 - ThreadLocal 的原理

最近被问了ThreadLocal的原理,之前只知道他是用来做数据的线程私有化,具体怎么用以及他的原理并没有研究过,所以这次去研究一下他的原理。首先还是创建一个新的AS项目,看看这个ThreadLocal是怎么用的,然后再一层一层去剖析他(示例代码)先编写一个线程类,在线程内用ThreadLocal处理一个在主存中的变量,然后循环操作的local变量;错误示例代码片段一刚开始我写成了这个...

2018-08-22 15:07:56

JNI心得 - (五)多线程回调Java的处理方式

在日常jni开发中或多或少会用到多线程,前面提到过jnienv只对当前线程有效,在其他线程中是没有用的。这就成为了多线程编程的阻碍,接下来就去研究一下多线程环境下如何使用jnienv的。首先还是先创建一个支持C++的androidstudio项目,由于新创建的线程没有JNIEnv环境,所以在创建线程之前要准备好创建JNIEnv的环境。虽然JNIEnv是线程私有的,但是JavaVm确实全...

2018-08-18 18:27:57

JNI心得 - (四)C++ 调用 java函数

获取代码接着上一节,这一节来写一下如何用本地代码调用java函数。首先在MainActivity.java声明一个本地方法publicstaticnativevoidcallBack(MainActivityactivity);然后将生成的代码移到cpp文件中JNIEXPORTvoidJNICALLJava_com_example_test_jnite...

2018-07-22 09:44:29

JNI心得 - (三)向本地代码传递数组

接着上一个例子java调用本地代码继续补充代码,这次看看本地代码如何接收java层数组。首先在MainActivity.java添加如下代码声明publicnativevoidstringArray(String[]strArr);publicnativevoidfloatArray(float[]fArray);publicnativ...

2018-07-18 23:39:34

JNI心得 - (二)java 调用本地代码

前面说JNI是供给java调用本地方法的接口,这次就来实践一下。本次是用AndroidStudio3.1.3进行的编码,首先创建项目主界面勾选includeC++support 之后操作都选择默认选项即可,最后点击finish。初始化项目所需要的库创建成功 androidstudio默认创建了一个c++文件,build->makemodu...

2018-07-17 23:27:27

Android 源码下载 到 编译全过程

近日网速还算可以,于是乎决定下载一下Android源代码以供在家研究学习。下载之前先认识一下repo,整个Android源码是由很多个git项目构成,Google对Android代码的更新也是更新到相应模块的git项目上。那对于需要编译Android的开发者来说,要分别clone每个git项目而且还要放到固定的位置确实是件惨绝人寰的w事,所以Google就开发了一个基于Python编写的帮助开发...

2018-07-13 08:43:26

JNI心得 - (一) 什么是JNI

    近些日子想整理一下知识脉络,索性就从JNI开始,开发android开发程序员或多或少会接触jni这一概念,刚刚接触这个东西只知道通过他可以让android程序调用c代码,其他的就不知道了,后来经过长时间的摸爬滚打,终于大概知道JNI到底是个什么东西了。 学习JNI时需要了解的一些基本知识JNIJNI全称JavaNativeInterface,他是接口也是协议,他的出现时为了...

2018-07-08 18:05:52

从应用角度看Android源码 - 神奇的Adapter

最近用到了Adapter,以前只是知道怎么用,从能去研究他的原理,这次就想以baseadapter为例研究一下其原理,从设计模式角度看Android在adapter这块用到了典型的观察者模式,那就从这个点开始,看看他是怎样的一个观察者。一般我们会这样设置一个ListView的适配器list.setAdapter(adapter);从这里开始,就开始adapter的神奇探索之旅

2017-08-22 22:34:50

从应用角度看Android源码 - 是谁调用的ActivityThread的main方法

这次研究一下ActivityThread这个类的main方法是谁调用的,先看一下main方法里都实现了那些东西。顺便提一句ActivityThread的存在是为了管理应用所在进程的主线程的,也就是UI线程的管理者。他的main方法是应用程序的入口,没有这个方法,应用是无法创建的。publicstaticvoidmain(String[]args){

2017-08-08 15:20:49

从应用角度看Android源码 - 研究一下Handler机制

上一篇扒开AsyncTask的祖坟的时候提到了Handler,说白了AsyncTask只是对Handler进行了封装,这次就进一步研究一下Handler机制,我写了个模拟handler机制的Demo (https://github.com/wk415190639/Looper),提及handler必然涉及到Looper、Message、MessageQueue,这几个类Handler机制主要组成部...

2017-08-06 00:38:26

从应用角度看Android源码 - 扒开AsyncTask的祖坟

本想写一下源码的获取和编译的过程,无奈出租房的网络实在太差,没能把源码下完整,暂且跳过这一过错,假设我已经写好了,这一篇就说一个简单的知识点,作为源码开发的

2017-08-01 13:50:19

从应用角度看Android源码 - 安装Ubuntu系统

要想搞Android源码必须要有一个支持make的系统,大多数源码开发者都会选择Ubuntu,所以我们要先把电脑安装一个Ubuntu系统(也可以装在虚拟机里),我一般会选择把镜像烧到U盘里,再通过U盘启动安装程序。具体步骤入下:     1、下载烧写工具           假设你现在有一个windows的系统,现在电脑上安装一个ultraiso(软碟通)的工具。    2、用u

2017-07-29 14:39:24

Git 常用命令集合

1、gitconfig--globaluser.name 配置用户名2、gitconfig--globaluser.email 配置邮箱3、gitinit初始化本地仓库 4、gitaddfilename 添加文件5、 gitremoteaddorininurl 添加远程仓库6、gitpush-u origin mast

2017-07-19 08:29:06

AndroidStudio Gradle开发

gradle对于刚接触Androidstudio的人来说一直是一个陌生的概念,gradle到底是什么呢,gradle是一种构建脚本,Androidstudio的构建完全是依赖他的,他是基于Groovyd的DSL,DSL全称为领域专用语言,所以刚开始不懂也是很正常的,对于Android开发者,前期只需要理解gradle的project与task的概念即可,没必要全都掌握,在以后的工作中会慢慢熟悉的。

2017-07-12 07:44:35

Android学习-新闻客户端养成记(三)

主界面的实现前面已做好了核心布局文件,接下来要做的就是让客户端活起来,现在的任务就是实现一个侧滑菜单的功能,    实现这个功能也并不难,使用V4包下的DrawerLayout控件可以轻松解决这一问题,代码如下,packageeNews.activity;importjava.lang.ref.WeakReference;importandroid.a

2016-09-14 20:38:22

Android学习-新闻客户端养成记(二)

新闻客户端需要的Activity                      新闻主界面侧滑菜单界面图片新闻界面视频列表界面             天气预报界面  新闻详情界面图片详情以上几个界面是项目所需要的核心界面,布局摆放并不怎么难,为了比例协调,我用了很多的

2016-09-13 22:36:09

Android学习-新闻客户端养成记(一)

经过数日的努力,新闻客户端终于完成了,想用博客记录一下开发过程中遇到的问题和解决方法,以免以后遇到同样的问题骂自己记性差.项目的前期准备做项目前应该仔细的规划一下功能需求,大体的预估一需要用到什么知识.新闻客户端需要用到的第三方jar包包括 volley Jar包:据我所知,在Android中主要提供了两种方式来进行HTTP通信,分别是httpUR

2016-09-13 19:43:58

Android学习-Handler内存泄漏

androidhandler的内存泄漏问题

2016-08-20 16:46:16

Android学习-Sax解析XML

androidSax事件驱动型解析XML

2016-08-07 12:37:28
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!