<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[^_虫虫_^的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ccbuluo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ccbuluo]]></copyright><item><title><![CDATA[Android framework层获取Binder调用者的pid,uid]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/108045493</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/108045493</guid><author>ccbuluo</author><pubDate>Sun, 16 Aug 2020 22:21:28 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/framework/framework-get-pid-uid.html
1.1 Java层
int pid = Binder.getCallingPid();
int uid = Binder.getCallingUid();
String callingApp = mContext.getPackageManager().getNameForUid(uid);

还可通过ActivityManager来跟进进程PID来获取进程名
public String]]></description><category></category></item><item><title><![CDATA[Android 修改系统默认输入法]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/108045361</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/108045361</guid><author>ccbuluo</author><pubDate>Sun, 16 Aug 2020 22:13:39 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/framework/modify-default-inputmethod.html
1. 修改系统默认输入法
Android系统的默认输入法在很多情况下是无法满足我们的需求的，因此就需要OEM自己集成输入法，基础输入法到系统，并需要修改系统默认输入法的配置。

在frameworks/base/packages/SettingsProvider/res/values/defaults.xml添加

&lt;string name="def_input_meth]]></description><category></category></item><item><title><![CDATA[Fragment生命周期及基本使用]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106730454</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106730454</guid><author>ccbuluo</author><pubDate>Sat, 13 Jun 2020 12:25:33 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/fragment-lifecycle.html
什么是Fragment
Fragment实在是Android 3.0（API 11）中引入的，译作“碎片”。Fragment作为应用用户接口或行为的一部分而放置在Activity中。Fragment不能独立存在，只能依赖与Activity存在。Fragment拥有自己的生命周期，其生命周期受宿主Activity的控制，状态会随着Activity的状态的改变而发生改变。
因And]]></description><category></category></item><item><title><![CDATA[ContentProvider使用简介]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106438149</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106438149</guid><author>ccbuluo</author><pubDate>Sat, 30 May 2020 10:42:50 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-contentprovider.html
ContentProvider中文名“内容提供者”，是Android系统不同应用程序之间进行数据交换的标准API，ContentProvide以Uri的形式对外提供数据，允许其他应用访问和修改数据；其他应用使用ContentResolve根据Uri进行访问操作指定的数据。Android内置的许多数据也都是使用ContentProvider形式，供开发者调用的；如视频，]]></description><category></category></item><item><title><![CDATA[BroadcastReceiver使用介绍]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106438069</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106438069</guid><author>ccbuluo</author><pubDate>Sat, 30 May 2020 10:38:12 +0800</pubDate><description><![CDATA[BroadcastReceiver 介绍
原文出处：http://www.ccbu.cc/index.php/android/broadcast_receiver_intro.html
BroadcastReceiver是Android开发4大组件之一。正如其名BroadcastReceiver作为广播接收者，用来监听系统全局的广播消息。广播（Broadcast）在Android系统中是在各组件之间传播数据的一种机制，这些组件可以位于不同的进程中。作为一个全局的广播监听组件，BroadcastReceive]]></description><category></category></item><item><title><![CDATA[Android JNI开发详解(7)-线程操作，异常处理]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106315800</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106315800</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 15:36:14 +0800</pubDate><description><![CDATA[线程操作
JNIEnv指针仅在创建它的线程有效。C/C++创建的线程默认是没有附加到JVM的，如果我们需要在本地线程线程访问JVM，那么必须先调用AttachCurrentThread将当前线程与JVM进行关联，然后才能获得JNIEnv对象。线程退出或不再需要使用JNIEnv时，我们必须通过调用DetachCurrentThread来解除连接，否则可能会导致线程不能正常退出或程序奔溃等问题。




函数
说明




AttachCurrentThread
将当前线程附件到JVM


DetachCurr]]></description><category></category></item><item><title><![CDATA[Android JNI开发工具篇(1)-开发环境搭建]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106312843</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106312843</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 11:54:33 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-jni-dev-env.html
工欲善其事，必先利其器。
1. 开发环境准备
搭建开发环境是我们进行开发前首先要完成的任务，进行Android jni开发，依赖的基本开发环境包括:

Android sdk
android ndk
cmake
android studio

Android studio的sdk manager已经包括了上面所说的sdk,ndk,cmake等工具的安装，所以一般只用下载and]]></description><category></category></item><item><title><![CDATA[Android JNI开发详解(6)-对象操作]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106312805</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106312805</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 11:49:01 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-jni-object-operate.html
1. 对象操作基本步骤
Jni是沟通Java世界和Native世界的纽带，Java层调用本地方法只用调用Java中定义的本地(native)方法就可用了，那么，本地的C/C++代码如何调用Java层的代码呢？这就是本章节对象操作要解决阐述的内容。
一般的，C/C++层要调用Java层代码，需要进行以下步骤。

获取Java层对应的jclass，通过jclass来]]></description><category></category></item><item><title><![CDATA[Android JNI开发详解(5)-引用篇]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106312775</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106312775</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 11:47:23 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-jni-ref.html
在JNI规范中定义了三种引用：局部引用（Local Reference）、全局引用（Global Reference）、弱全局引用（Weak Global Reference）。
1. 局部引用
1.1 局部引用
通过NewLocalRef和各种JNI接口创建（FindClass、NewObject、GetObjectClass和NewCharArray等）。会阻止GC回收所引用的对]]></description><category></category></item><item><title><![CDATA[Android JNI开发详解(4)-数据操作]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106312726</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106312726</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 11:44:41 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-jni-data-operation.html
在前面关于JNI介绍的文章中我们知道，Java层和Navice层是两个世界，而JNI正是为了这个两个世界能够友好的相互沟通而设计的。既然是不同的两个世界，所有他们各自的数据类型定义也是不一样的，Java层和Native层都有自己的数据类型，在JNI中，这些数据类型又可以分为基本数据类型和引用数据类型，其中，基本数据类型是可以直接相互转换的，而引用数据类型则需要进]]></description><category></category></item><item><title><![CDATA[Android JNI开发详解(3)-JavaVM和JNIEnv]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106312676</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106312676</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 11:41:43 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-jni-jnivm-jnienv.html
JavaVM 和 JNIEnv
JNI 定义了两个关键数据结构，即JavaVM和JNIEnv。两者本质上都是指向函数表的二级指针。在 C++ 版本中，它们是一些类，这些类具有指向函数表的指针，并具有每个通过该函数表间接调用的 JNI 函数的成员函数。
1. JavaVM
JavaVM是虚拟机在JNI中的表示，一个JVM中只有一个JavaVM对象，这个对象是线程共享的]]></description><category></category></item><item><title><![CDATA[Android JNI开发详解(2)-函数注册]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106312601</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106312601</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 11:37:56 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-jni-function-register.html
1. JNI开发流程


创建Native C++工程，这部分可用参考[Android JNI开发详解(2)-开发环境搭建](Android JNI开发工具篇(1)-开发环境搭建.md)


创建Java层本地接口调用类，并定义好相应的本地函数。


将Java源代码编译成class字节码文件(Android studio会自动生成)。


创建对应的本地]]></description><category></category></item><item><title><![CDATA[Android JNI开发详解(1)-JNI开发介绍]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/106312505</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/106312505</guid><author>ccbuluo</author><pubDate>Sun, 24 May 2020 11:33:57 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/index.php/android/android-jni-intro.html
什么是JNI
JNI是Java Native Interface的缩写，中文译为“Java本地接口”，它提供了若干的API实现了Java和其他语言的通信（主要是C&amp;C++）进行相互调用，从Java1.1开始，JNI标准成为java平台的一部分，它允许Java代码和其他语言写的代码进行交互。所以，JNI技术是JAVA与本地世界的通信桥梁，通过这种技术可以做到以下两点：


]]></description><category></category></item><item><title><![CDATA[PathFromUri(Android 4.4 kitkat以上及以下根据uri获取路径的方法)]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/103827019</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/103827019</guid><author>ccbuluo</author><pubDate>Fri, 03 Jan 2020 20:57:36 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/android/android-pathfromuri
Android4.4开始，Uri的格式定义发生了变化，与之前的固定形势相比较，出现了几种不同的格式定义，分别对应不同的Provider（DocumentProvider，DownloadsProvider，MediaProvider），对于Uri，可以通过DocumentsContract.is...]]></description><category></category></item><item><title><![CDATA[Android 硬件加速(Hardware acceleration)]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/103827002</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/103827002</guid><author>ccbuluo</author><pubDate>Fri, 03 Jan 2020 20:54:37 +0800</pubDate><description><![CDATA[原文出处：http://www.ccbu.cc/android/android-hardware-acceleration
硬件加速
Android 3.0 (API level 11), 开始支持
所有的View 的canvas都会使用GPU，但是硬件的加速会占有一定的RAM。
在API &gt;= 14上，默认是开启的，如果你的应用只是标准的View和Drawable，全局都打开硬件加速，是不...]]></description><category></category></item><item><title><![CDATA[Android.os.SystemClock 介绍]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/103674717</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/103674717</guid><author>ccbuluo</author><pubDate>Mon, 23 Dec 2019 22:38:39 +0800</pubDate><description><![CDATA[Class Overview
Core timekeeping facilities.
Three different clocks are available, and they should not be confused:

System.currentTimeMillis() is the standard “wall” clock (time and date) expressing m...]]></description><category></category></item><item><title><![CDATA[WindowManager.LayoutParams]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/103674702</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/103674702</guid><author>ccbuluo</author><pubDate>Mon, 23 Dec 2019 22:37:13 +0800</pubDate><description><![CDATA[WindowManager.LayoutParams 是 WindowManager 接口的嵌套类；它继承于 ViewGroup.LayoutParams； 它用于向WindowManager描述Window的管理策略。
定义
public static class WindowManager.LayoutParams 
extends ViewGroup.LayoutParams impleme...]]></description><category></category></item><item><title><![CDATA[ProgressBar简介]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/103648396</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/103648396</guid><author>ccbuluo</author><pubDate>Sat, 21 Dec 2019 21:01:08 +0800</pubDate><description><![CDATA[ProgressBar是Android系统提供的进度条view控件。


ProgressBar有两个进度，一个是Android:progress，另一个是android:secondaryProgress。后者主要是为缓存需要所涉及的，比如在看网络视频时候都会有一个缓存的进度条以及还要一个播放的进度，在这里缓存的进度就可以是android:secondaryProgress，而播放进度就是and...]]></description><category></category></item><item><title><![CDATA[ActionBar简介]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/103648366</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/103648366</guid><author>ccbuluo</author><pubDate>Sat, 21 Dec 2019 20:59:12 +0800</pubDate><description><![CDATA[ActionBar是Android 3.0以后Anrdoid系统增加的导航栏功能控件。它标识了用户当前操作界面的位置，并提供了额外的用户动作、界面导航等功能。使用ActionBar的好处是，它可以给提供一种全局统一的UI界面，使得用户在使用任何一款软件时都懂得该如何操作，并且ActionBar还可以自动适应各种不同大小的屏幕。由于ActionBar是在3.0以后的版本中加入的，如果想在2.x的版本...]]></description><category></category></item><item><title><![CDATA[Android Drawable之GradientDrawable]]></title><link>https://blog.youkuaiyun.com/ccbuluo/article/details/53165981</link><guid>https://blog.youkuaiyun.com/ccbuluo/article/details/53165981</guid><author>ccbuluo</author><pubDate>Mon, 14 Nov 2016 22:44:18 +0800</pubDate><description><![CDATA[GradientDrawable可以在res/drawable目录下以xml文件用标签来定义。看看官方文档给出的xml定义说明吧。<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectang]]></description><category></category></item></channel></rss>