<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[leunging的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/leunging</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; leunging]]></copyright><item><title><![CDATA[Android Studio 配置 NDK 只编译一种 ABI 的so (mac/ndk-build)]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/111593353</link><guid>https://blog.youkuaiyun.com/leunging/article/details/111593353</guid><author>leunging</author><pubDate>Wed, 23 Dec 2020 16:46:15 +0800</pubDate><description><![CDATA[如果不配置 ndk 编译的 so 类型，Android Studio 默认会编译出多种 ABI 的 so，比如Android Studio 已有项目添加NDK支持(mac/ndk-build)中会有 arm64-v8a、armeabi-v7a、x86_64、x86 四种 so：



如果需要控制 ndk-build 的 so 类型，只需要在 gradle.build 中添加：


android {
        defaultConfig {
            ndk {
         ..]]></description><category></category></item><item><title><![CDATA[Android Studio 已有项目添加NDK支持(mac/ndk-build)]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/111570136</link><guid>https://blog.youkuaiyun.com/leunging/article/details/111570136</guid><author>leunging</author><pubDate>Wed, 23 Dec 2020 02:13:38 +0800</pubDate><description><![CDATA[1、配置已安装的ndk版本到Android NDK Location 路径：/Users/miao/Library/Android/sdk/ndk/21.0.6113669 （File -&gt; Project Structure -&gt; SDK Location -&gt; Android NDK Location）



2、在app module下的 src/main 目录新建 jni 目录



3、在 MiaoApplication 中添加 native 方法声明：public stati.]]></description><category></category></item><item><title><![CDATA[从finalize的执行来看强引用、弱引用、软引用]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/80834470</link><guid>https://blog.youkuaiyun.com/leunging/article/details/80834470</guid><author>leunging</author><pubDate>Wed, 27 Jun 2018 20:40:46 +0800</pubDate><description><![CDATA[在finalize的执行来看什么是GC Root我们测试了不同GC Root可达时，对对象finalize方法的执行的影响。下面我们测试一下不同引用对对象finalize方法的执行的影响。public class RootTest {
    static int gcTime = 0;

    public static void main(String[] args) throws Inte...]]></description><category></category></item><item><title><![CDATA[从finalize的执行来看什么是GC Root]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/80775632</link><guid>https://blog.youkuaiyun.com/leunging/article/details/80775632</guid><author>leunging</author><pubDate>Fri, 22 Jun 2018 17:06:15 +0800</pubDate><description><![CDATA[从finalize的执行来理解Java中GC Root是什么]]></description><category></category></item><item><title><![CDATA[Java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/80599282</link><guid>https://blog.youkuaiyun.com/leunging/article/details/80599282</guid><author>leunging</author><pubDate>Wed, 06 Jun 2018 19:57:13 +0800</pubDate><description><![CDATA[Java中的变量类型根据不同的标准可以分为两类，如果以其引用的数据类型的不同来区分可分为“原始数据类型变量和引用数据类型变量”，如果以其作用范围的不同来区分可分为“局部变量，实例变量和静态变量”。根据“Java中的变量与数据类型”中的介绍，“变量是在内存中分配的保留区域的名称。换句话说，它是一个内存位置的名称”，也就是说我们通过这个变量名字就可以找到一个指向这个变量所引用的数据的内存指针，根据变量...]]></description><category></category></item><item><title><![CDATA[Java中的变量与数据类型]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/80598259</link><guid>https://blog.youkuaiyun.com/leunging/article/details/80598259</guid><author>leunging</author><pubDate>Wed, 06 Jun 2018 18:20:32 +0800</pubDate><description><![CDATA[一个变量是“在Java程序执行时持有值”的一个容器，一个变量会被分配一个数据类型，变量是一个内存位置的名字。 Java中有三种类型的变量：局部，实例和静态。在java中有两种类型的数据类型：原始类型和非原始类型。Java中的变量变量是在内存中分配的保留区域的名称。换句话说，它是一个内存位置的名称。它是一个“变化＋能够”的组合，意味着它的值可以改变。int data=50;//这里 data 是变量...]]></description><category></category></item><item><title><![CDATA[Activity前后台、旋转、跳转生命周期变化]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/80578950</link><guid>https://blog.youkuaiyun.com/leunging/article/details/80578950</guid><author>leunging</author><pubDate>Tue, 05 Jun 2018 12:12:53 +0800</pubDate><description><![CDATA[Activity前后台06-05 11:52:16.676 26146-26146/at.miao.miaoapplication E/miao_log: onCreate 启动06-05 11:52:16.711 26146-26146/at.miao.miaoapplication E/miao_log: onStart06-05 11:52:16.714 26146-26146/at.mia...]]></description><category></category></item><item><title><![CDATA[ScheduledExecutorService与Timer的方法比较]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/74990331</link><guid>https://blog.youkuaiyun.com/leunging/article/details/74990331</guid><author>leunging</author><pubDate>Tue, 11 Jul 2017 18:34:30 +0800</pubDate><description><![CDATA[ScheduledExecutorService与Timer都有scheduleAtFixedRate方法，scheduleWithFixedDelay只有ScheduledExecutorService有。ScheduledExecutorService 的 scheduleAtFixedRate(Runnable command,long initialDelay,long period1,TimeUnit unit) 与Timer 的 scheduleAtFixedRate(TimerTask tas]]></description><category></category></item><item><title><![CDATA[java.nio.channels.FileChannel中lock()与tryLock()方法的区别（Android Studio代码环境）]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/73911927</link><guid>https://blog.youkuaiyun.com/leunging/article/details/73911927</guid><author>leunging</author><pubDate>Thu, 29 Jun 2017 15:18:10 +0800</pubDate><description><![CDATA[FileChannel中的lock()与tryLock()方法都是尝试去获取在某一文件上的独有锁（以下简称独有锁），可以实现进程间操作的互斥。区别在于lock()会阻塞（blocking）方法的执行，tryLock()则不会。]]></description><category></category></item><item><title><![CDATA[Android获取View位置getHitRect、getDrawingRect、getLocalVisibleRect、getGlobalVisibleRect说明]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/53083668</link><guid>https://blog.youkuaiyun.com/leunging/article/details/53083668</guid><author>leunging</author><pubDate>Tue, 08 Nov 2016 16:25:32 +0800</pubDate><description><![CDATA[在Android中获取View在父View或在屏幕中的位置可以使用getHitRect、getDrawingRect、getLocalVisibleRect、getGlobalVisibleRect，以判断View是否显示在屏幕中。

一般这样使用（xxx为其中的一个）

View view =...;
Rect rect = new Rect();
view.xxx(rect);
int left = rect.left;
int top = rect.top;
int right = rect.righ]]></description><category></category></item><item><title><![CDATA[Java内部类持有外部类的引用详细分析与解决方案]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/53080863</link><guid>https://blog.youkuaiyun.com/leunging/article/details/53080863</guid><author>leunging</author><pubDate>Tue, 08 Nov 2016 11:55:45 +0800</pubDate><description><![CDATA[在Java中内部类的定义与使用一般为成员内部类与匿名内部类，他们的对象都会隐式持有外部类对象的引用，影响外部类对象的回收。解决方案为

1.将内部类定义为static

2.用static的变量引用匿名内部类的实例或将匿名内部类的实例化操作放到外部类的静态方法中]]></description><category></category></item><item><title><![CDATA[Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序]]></title><link>https://blog.youkuaiyun.com/leunging/article/details/53025166</link><guid>https://blog.youkuaiyun.com/leunging/article/details/53025166</guid><author>leunging</author><pubDate>Thu, 03 Nov 2016 20:16:06 +0800</pubDate><description><![CDATA[实例化子类时，父类与子类中的静态代码块、实例代码块、静态变量、实例变量、构造函数的执行顺序是怎样的？


代码执行的优先级为：
firest：静态部分
second：实例化过程


详细顺序为：
1.父类静态代码块与父类静态变量赋值（取决于代码书写顺序）
2.子类静态代码块与子类静态变量赋值（取决于代码书写顺序）
3.父类实例变量赋值与父类代码块（取决于代码书写顺序）
4.]]></description><category></category></item></channel></rss>