<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[aphrodite1314的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/aphrodite1314</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aphrodite1314]]></copyright><item><title><![CDATA[《见与不见》]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/134456688</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/134456688</guid><author>aphrodite1314</author><pubDate>Fri, 17 Nov 2023 10:10:47 +0800</pubDate><description><![CDATA[你爱或者不爱我，爱就在那里，不增不减。来我怀里，或者，让我住进你的心里。我的手就在你的手里，不舍不弃。《见与不见》–仓央嘉措。我就在那里，不悲不喜。情就在那里，不来不去。默然相爱，寂静喜欢。]]></description><category></category></item><item><title><![CDATA[Java-垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/131227378</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/131227378</guid><author>aphrodite1314</author><pubDate>Thu, 15 Jun 2023 14:55:48 +0800</pubDate><description><![CDATA[天将降大任于斯人也，必先苦其心志，劳其筋骨，饿其体肤，空乏其身。知识就像甘蔗，入口甘甜，嚼之清脆爽口，久了不知其味，弃之又觉可惜，唯有反复咀嚼，方可有所增益，他日终成正果~画风一转，来谈一谈Java垃圾回收。本文将围绕以下三个问题来进行讲解。如何判断需要回收的内存？什么时候回收内存？如何回收内存？Java 中的内存分为堆（Heap）和栈（Stack）两部分，其中堆用于存储对象，栈用于存储基本类型数据和对象引用。]]></description><category></category></item><item><title><![CDATA[Kotlin-浅谈协程]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/130881504</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/130881504</guid><author>aphrodite1314</author><pubDate>Fri, 26 May 2023 10:28:08 +0800</pubDate><description><![CDATA[方法三:是比较推荐的使用方法，我们可以通过 context 参数去管理和控制协程的生命周期（这里的 context 和 Android 里的不是一个东西，是一个更通用的概念，会有一个 Android 平台的封装来配合使用）。协程使用同步的方式完成异步任务，而且代码简洁，这也是Kotlin协程的魅力所在。将业务流程原理拆分得更细致一点，在主线程中创建协程A中执行整个业务流程，如果遇到异步调用任务则协程A被挂起，切换到IO线程中创建子协程B，获取结果后再恢复到主线程的协程A上，然后继续执行剩下的流程。]]></description><category></category></item><item><title><![CDATA[源码分析之——Application初始化流程]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/122685029</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/122685029</guid><author>aphrodite1314</author><pubDate>Tue, 25 Jan 2022 14:52:58 +0800</pubDate><description><![CDATA[前言
犹豫了好久想写一篇关于AMS启动流程的文章，也做了很多准备看了很多的源码。但怕自己理解的不全面，迟迟没敢下手。

对于Android的小伙伴来说，大家或多或少的都会了解一点ActivityManagerService，简称AMS。那么废话不多说，下面我将针对AMS启动做一个简单的介绍。以Android10.0 aosp为基础进行梳理。
谨以此记录下学习流程，欢迎广大博友交流指正。是时候提高一波了。。。
启动流程



...]]></description><category></category></item><item><title><![CDATA[源码分析之——AMS启动流程]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/121680527</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/121680527</guid><author>aphrodite1314</author><pubDate>Thu, 02 Dec 2021 16:36:02 +0800</pubDate><description><![CDATA[在这里插入图片描述

前言
对于Android的小伙伴来说，大家或多或少的都会了解一点ActivityManagerService，简称AMS。那么废话不多说，下面我将针对AMS启动做一个简单的介绍。以Android10.0 aosp为基础进行梳理。
谨以此记录下学习流程，欢迎广大博友交流指正。是时候提高一波了。。。
启动流程



...]]></description><category></category></item><item><title><![CDATA[Activity生命周期]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/120507964</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/120507964</guid><author>aphrodite1314</author><pubDate>Mon, 27 Sep 2021 14:34:03 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[源码分析之——Activity四大启动模式]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/112317388</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/112317388</guid><author>aphrodite1314</author><pubDate>Thu, 07 Jan 2021 16:27:23 +0800</pubDate><description><![CDATA[1.源码分析之——AMS启动流程
2.源码分析之——WMS启动流程
3.源码分析之——SharedPreferences
4.源码分析之——Retrofit
5.源码分析之——OKHttp
6.源码分析之——Android事件分发机制

前言
基于源码，简单分析下Activity四大启动模式。
简介
安卓四大组件之一Activity有四种启动模式，分别为：
1.standard 标准模式，每次都会新建一个实例对象；
2.singleTop 如果在任务栈顶发现了相同的实例则重用，否则新建并压入栈顶；
3.si]]></description><category></category></item><item><title><![CDATA[源码分析之——Handler解析]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/111870190</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/111870190</guid><author>aphrodite1314</author><pubDate>Tue, 29 Dec 2020 16:44:10 +0800</pubDate><description><![CDATA[1.源码分析之——AMS启动流程
2.源码分析之——WMS启动流程
3.源码分析之——SharedPreferences
4.源码分析之——Retrofit
5.源码分析之——OKHttp
6.源码分析之——Android事件分发机制

前言
基于源码，简单分析下Handler机制。
流程图

作用
简单来说就是线程间通信。比如说有一个耗时操作，当其完成后需要更新UI页面，这时候就可以考虑使用Handler了。
使用
        Looper.prepare();
        Handler han]]></description><category></category></item><item><title><![CDATA[源码分析之——Android事件分发机制]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/111476218</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/111476218</guid><author>aphrodite1314</author><pubDate>Mon, 21 Dec 2020 18:07:30 +0800</pubDate><description><![CDATA[1.源码分析之——AMS启动流程
2.源码分析之——WMS启动流程
3.源码分析之——SharedPreferences
4.源码分析之——Retrofit
5.源码分析之——OKHttp

前言
基于源码，简单分析下Android事件分发机制。
流程图

源码分析
下面将从源码角度对以上流程进行分析。
做过Android开发的同学对于几大布局应该都很熟悉，像LinearLayout，RelativeLayout，FrameLayout，CoordinatorLayout等等。细心的同学就会发现这些布局全部]]></description><category></category></item><item><title><![CDATA[Only the original thread that created a view hierarchy can touch its views]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/110874930</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/110874930</guid><author>aphrodite1314</author><pubDate>Tue, 08 Dec 2020 16:20:06 +0800</pubDate><description><![CDATA[背景：
今天项目中遇到一个奇葩问题，给NestedScrollView子view1，view2设置 GONE属性的时候，发现留下了两个空白区域（如下图所示）。我们都知道view的GONE属性是会把整个区域都会给隐藏掉的呀，一头雾水，why？

分析：
绞尽脑汁。。。没办法只能一步一步debug，尝试不断复现此问题，然后抓log，说来也巧被我抓住了一些蛛丝马迹。
2020-12-08 14:35:55.275 15880-15898/? W/System.err: android.view.ViewRootI]]></description><category></category></item><item><title><![CDATA[源码分析之——OKHttp]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/110479002</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/110479002</guid><author>aphrodite1314</author><pubDate>Wed, 02 Dec 2020 15:55:01 +0800</pubDate><description><![CDATA[1.源码分析之——Retrofit

前言
基于源码，简单分析下OKHttp工作流程。
流程图

OKHttp基本使用
在 gradle 中添加依赖
implementation 'com.squareup.okhttp3:okhttp:3.14.9'

1.首先创建OkHttpClient对象
OkHttpClient client = new OkHttpClient();

2.构造Request对象
Request request = new Request.Builder()
          ]]></description><category></category></item><item><title><![CDATA[源码分析之——Retrofit]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/110086482</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/110086482</guid><author>aphrodite1314</author><pubDate>Tue, 24 Nov 2020 17:46:13 +0800</pubDate><description><![CDATA[前言
基于源码，简单分析下Retrofit工作流程。
流程图

源码分析
下面将从Retrofit的创建到发送一个异步请求再到callback这一流程进行分析。Retrofit使用建造者模式进行创建，因此让我们从Builder开启源码分析之旅吧。注意：为了精简内容，部分不在分析之内的代码已省略，如果想深入学习的同学请查看详细源码
Retrofit源码
  public Retrofit build() {
      if (baseUrl == null) {
        throw new Ill.]]></description><category></category></item><item><title><![CDATA[栈内存溢出: java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/109839626</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/109839626</guid><author>aphrodite1314</author><pubDate>Fri, 20 Nov 2020 14:19:45 +0800</pubDate><description><![CDATA[项目场景：
Android APP开发

问题描述：
华为Mate40手机上莫名其妙的闪退。
Log如下：
11-10 18:05:17.671 31217 31217 E AndroidRuntime: java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
11-10 18:05:17.671 31217 31217 E AndroidRuntime: 	at java.lang.Thread.native.]]></description><category></category></item><item><title><![CDATA[源码分析之——SharedPreferences]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/104812973</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/104812973</guid><author>aphrodite1314</author><pubDate>Thu, 12 Mar 2020 11:30:48 +0800</pubDate><description><![CDATA[前言
前几篇文章主要讲了安卓四大组件之Activity。最近在coding的时候又遇到一个问题：自己项目中有两个Activity分别命名为Activity1和Activity2，而Activity1属于process1,Activity2属于process2，从Activity1跳转到Activity2，然后在Activity2中通过使用SharedPreferences进行保存简单的数据，结果不...]]></description><category></category></item><item><title><![CDATA[源码分析之——WMS启动流程]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/103989195</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/103989195</guid><author>aphrodite1314</author><pubDate>Wed, 15 Jan 2020 14:49:26 +0800</pubDate><description><![CDATA[前言
上一节讲了Activity启动流程，下面针对WMS启动做一个简单的介绍。以Android10.0 aosp为基础进行梳理。
谨以此记录下学习流程，欢迎广大博友交流指正。是时候提高一波了。。。
启动流程

简单分析
SystemServer类中run()方法在执行的时候会启动三类服务，分别为：

...]]></description><category></category></item><item><title><![CDATA[源码分析之——AMS之应用启动流程]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/103736255</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/103736255</guid><author>aphrodite1314</author><pubDate>Fri, 27 Dec 2019 17:43:04 +0800</pubDate><description><![CDATA[谨以此记录下学习流程，欢迎广大博友交流指正。
1.代码来源

2.启动流程图


]]></description><category></category></item><item><title><![CDATA[浅谈ReactNative 组件的生命周期]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/78351962</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/78351962</guid><author>aphrodite1314</author><pubDate>Thu, 26 Oct 2017 11:46:45 +0800</pubDate><description><![CDATA[React Native 中组件的生命周期 
28 OCTOBER 2015 on React-Native, Android 
概述 
就像 Android 开发中的 View 一样，React Native（RN） 中的组件也有生命周期（Lifecycle）。所谓生命周期，就是一个对象从开始生成到最后消亡所经历的状态，理解生命周期，是合理开发的关键。RN 组件的生命周期整理如下图： 
3-3-c]]></description><category></category></item><item><title><![CDATA[Android TextView内容包含中英文时满行居中，不足一行则左对齐，会出现左右空格不一致。]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/78030538</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/78030538</guid><author>aphrodite1314</author><pubDate>Tue, 19 Sep 2017 15:27:06 +0800</pubDate><description><![CDATA[package com.roya.shandong.view;import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.text.Layout; 
import android.text.StaticLayout; 
import a]]></description><category></category></item><item><title><![CDATA[用StrictMode来检测SQLite的泄漏leaked优秀排错方法]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/77883754</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/77883754</guid><author>aphrodite1314</author><pubDate>Thu, 07 Sep 2017 16:47:04 +0800</pubDate><description><![CDATA[用StrictMode来检测SQLite的泄漏leaked优秀排错方法Chapter: Android与SQLite数据库 
1. SQLite 数据库的初步认识 
2. SQLite 数据库的一些基本操作 
3. SQLite 在 Android 开发中的简单应用演示 
4. Android SQLite 增删改查操作的补充说明 
5. 单独谈谈 Android Cursor 的使用细节 
6.]]></description><category></category></item><item><title><![CDATA[菜鸟面试修行记]]></title><link>https://blog.youkuaiyun.com/aphrodite1314/article/details/73770874</link><guid>https://blog.youkuaiyun.com/aphrodite1314/article/details/73770874</guid><author>aphrodite1314</author><pubDate>Tue, 27 Jun 2017 10:02:48 +0800</pubDate><description><![CDATA[面试问题总结：
1、service 启动方式
分为两种：
一、Context.startService()方式启动 
Context.startService()方式的生命周期： 启动时，startService –> onCreate() –> onStart()停止时，stopService –> onDestroy()如果调用者直接退出而没有停止Service，则Service 会一]]></description><category></category></item></channel></rss>