<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[flutter001的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/flutter001</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; flutter001]]></copyright><item><title><![CDATA[2020上半年百度Android岗（初级到高级）面试真题全收录]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122310553</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122310553</guid><author>flutter001</author><pubDate>Tue, 04 Jan 2022 20:07:30 +0800</pubDate><description><![CDATA[dispatchTouchEvent：方法返回值为true表示事件被当前视图消费掉；返回为super.dispatchTouchEvent表示继续分发该事件，返回为false表示交给父类的onTouchEvent处理。
onInterceptTouchEvent：方法返回值为true表示拦截这个事件并交由自身的onTouchEvent方法进行消费；返回false表示不拦截，需要继续传递给子视图。如果return super.onInterceptTouchEvent(ev)， 事件拦截分两种情况:  
1.]]></description><category></category></item><item><title><![CDATA[2020Android开发陷入饱和,移动开发者未来的出路在哪里,我们该如何让应对？]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122310523</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122310523</guid><author>flutter001</author><pubDate>Tue, 04 Jan 2022 20:06:05 +0800</pubDate><description><![CDATA[视图系统（View System）：一个可拓展的视图集合，用于创建应用程序用户界面

3，系统运行库层
程序库
Android包含一些C/C++库，这些库能被Android系统中不同的组件使用。他们通过Android应用程序框架为开发者提供服务，以下是一些核心库：

系统C库（libc）:一个从BSD继承来的标准C系统函数库，他是专门为基于embedded linux的设备定制的媒体库（Media Framework）：基于Packet Video opencore; 该库支持多种常用的音频、视频格式回放.]]></description><category></category></item><item><title><![CDATA[Android 实现搜索历史(2)，附相关架构及资料]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122285194</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122285194</guid><author>flutter001</author><pubDate>Mon, 03 Jan 2022 11:11:27 +0800</pubDate><description><![CDATA[int cLeft = left + lp.leftMargin;
int cTop = top + lp.topMargin;
int cRight = cLeft + child.getMeasuredWidth();
int cBottom = cTop + child.getMeasuredHeight();
//进行子View进行布局
child.layout(cLeft, cTop, cRight, cBottom);
left += child.getMeasuredWidth() + lp.]]></description><category></category></item><item><title><![CDATA[Android 基础：Materia Design 定义视图阴影elevation和创建卡片CardView]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122285157</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122285157</guid><author>flutter001</author><pubDate>Mon, 03 Jan 2022 11:08:37 +0800</pubDate><description><![CDATA[&lt;android.support.v7.widget.CardView


android:id="@+id/card_view"


android:layout_width=“200dp”


android:layout_height=“200dp”


card_view:cardCornerRadius=“3dp”&gt;


…


&lt;/android.support.v7.widget.CardView&gt;



其中 card_view:cardCornerRadius ..]]></description><category></category></item><item><title><![CDATA[Android Volley：使用方法总结及实例解析，【深度思考]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122285093</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122285093</guid><author>flutter001</author><pubDate>Mon, 03 Jan 2022 11:02:58 +0800</pubDate><description><![CDATA[public LruBitmapCache(int maxSize) {
super(maxSize);
}
public LruBitmapCache() {
this(getDefaultLruCacheSize());
}
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight() / 1024;
}
@Override
public Bitmap g]]></description><category></category></item><item><title><![CDATA[Android ViewBinding使用详解，kotlin打包成exe]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122285068</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122285068</guid><author>flutter001</author><pubDate>Mon, 03 Jan 2022 11:01:33 +0800</pubDate><description><![CDATA[1.调用inflate()包含在生成的绑定类中的静态方法。这会为要使用的活动创建绑定类的实例。


2.通过调用getRoot()方法获取对根视图的引用。


3.将根视图传递给以 setContentView() 使其成为屏幕上的活动视图。


实例如下：
private&nbsp;ActivityProgressbarBinding&nbsp;activityProgressbarBinding;
@Override
protected&nbsp;void&nbsp;onCreate(@Nullab..]]></description><category></category></item><item><title><![CDATA[Android UI—仿微信底部导航栏布局，Android学习笔记在互联网上火了]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122285048</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122285048</guid><author>flutter001</author><pubDate>Mon, 03 Jan 2022 11:00:08 +0800</pubDate><description><![CDATA[android:text=“我”
android:textColor="@color/tab_selector_tv_color" /&gt;

看下新建的布局和资源文件：

其中tab_selector_tv_color.xml主要是用于控制切换的时候显示下面字体的颜色:
&lt;?xml version=``"1.0" encoding=``"utf-8"``?&gt;
&lt;selector xmlns:android=``"http://schemas.android.com/apk/res/an]]></description><category></category></item><item><title><![CDATA[Android-NDK开发Crash错误定位，android适配方案]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122253648</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122253648</guid><author>flutter001</author><pubDate>Fri, 31 Dec 2021 12:07:49 +0800</pubDate><description><![CDATA[01-01 17:59:38.586: I/DEBUG(253):     r8 75226d08  r9 00000000  sl 417c5c38  fp bedbf134
01-01 17:59:38.586: I/DEBUG(253):     ip 41705910  sp bedbf0f0  lr 4012e169  pc 4013d10c  cpsr 000f0010
// 省略部份日志 。。。。。。
01-01 17:59:38.596: I/DEBUG(253): backtrace:
0]]></description><category></category></item><item><title><![CDATA[Android-Native进程间通信实例—Socket本地通信服务端进程异常退出解决办法]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122253630</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122253630</guid><author>flutter001</author><pubDate>Fri, 31 Dec 2021 12:06:45 +0800</pubDate><description><![CDATA[close(clifd);
pthread_exit(NULL);
}
}
执行结果如下：

过程分析，
1. 先执行服务端程序，然后运行客户端程序，客户端程序强制退出（通过快捷键ctrl+c），服务端client_thread中write返回-1，线程正常退出。
2. 这时候服务端程序还阻塞在accpet等待下一次的客户端连接请求，运行新的客户端程序，然后强制退出客户端，发现服务端进程居然直接退出了！
咋办啊！感觉代码没有任何问题了，为啥还会出错，虽然很明确一定是write的时候没能写进客户端导致的进程奔]]></description><category></category></item><item><title><![CDATA[Android-JVM面试专题：你知道面试官为什么要问JVM原理吗？原理包含哪些]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122253607</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122253607</guid><author>flutter001</author><pubDate>Fri, 31 Dec 2021 12:04:28 +0800</pubDate><description><![CDATA[比如 GC 的时候必须要等到 Java 线程都进入到 safepoint 的时候 VMThread 才能开始执行 GC，

循环的末尾 (防止大循环的时候一直不进入 safepoint，而其他线程在等待它进入safepoint)
方法返回前
调用方法的 call 之后
抛出异常的位置

6. GC 的三种收集方法：标记清除、标记整理、复制算法的原理与特点，分别用在什么地方，如果让你优化收集方法，有什么思路？
先标记，标记完毕之后再清除，效率不高，会产生碎片
**复制算法：**分为 8：1 的 Eden 区和]]></description><category></category></item><item><title><![CDATA[Android-Jetpack架构组件（二）带你了解Lifecycle，给2021的移动开发一些建议]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122253582</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122253582</guid><author>flutter001</author><pubDate>Fri, 31 Dec 2021 12:02:09 +0800</pubDate><description><![CDATA[@Override
protected void onResume() {
super.onResume();
myPresenter.onResume();
}
@Override
protected void onPause() {
super.onPause();
myPresenter.onPause();
}
}
class MyPresenter{

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFo]]></description><category></category></item><item><title><![CDATA[Android-APK：为何你的应用老是被破解，该如何有效地做签名校验]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122253564</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122253564</guid><author>flutter001</author><pubDate>Fri, 31 Dec 2021 12:00:50 +0800</pubDate><description><![CDATA[packageInfo.signatures&nbsp;=&nbsp;new&nbsp;Signature[this.sign.length];
for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;packageInfo.signatures.length;&nbsp;i++)&nbsp;{
packageInfo.signatures[i]&nbsp;=&nbsp;new&nbsp;Signature(this.sign[i]);
}
ret]]></description><category></category></item><item><title><![CDATA[Android(java)回调函数经典示例，8年Android开发教你如何写简历]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122253531</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122253531</guid><author>flutter001</author><pubDate>Fri, 31 Dec 2021 11:58:48 +0800</pubDate><description><![CDATA[1.使用java回调函数来实现一个测试函数运行时间的工具类

public class TestObject {
/**

一个用来被测试的方法，进行了一个比较耗时的循环

*/
public static void testMethod(){
for ( int i= 0 ; i&lt; 100000000 ; i++){
}
}
/**

一个简单的测试方法执行时间的方法

*/
public void testTime(){
long begin = System.currentTimeMillis(]]></description><category></category></item><item><title><![CDATA[Android项目中gradle文件里面的productFlavors一些常用配置]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122234719</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122234719</guid><author>flutter001</author><pubDate>Thu, 30 Dec 2021 13:31:18 +0800</pubDate><description><![CDATA[看看发生了什么:

当然,相应的打包时的项目选择也多了起来:

2.添加一些项目常用配置 现在有那么多环境的包,有啥用?在每个不同环境的包里面配置自己需要的东西啊,比如咱们刚才说的,每个环境的API地址不一样,怎么;再比如说,我开发环境需要支持自动升级,可我正式环境不想支持了,需要一个常量做一个标示,怎么办?盘他就得了!

flavorDimensions “mode”
productFlavors{
dev{
dimension “mode”
buildConfigField(“String”, “HTT]]></description><category></category></item><item><title><![CDATA[Android音视频开发入门（1）基础概要，flutter视频教程]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122234705</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122234705</guid><author>flutter001</author><pubDate>Thu, 30 Dec 2021 13:30:23 +0800</pubDate><description><![CDATA[包括：H.261、H.262、H.263+、H.263++、H.264(就是与MPEG4 AVC合作的结晶)
音频编码

常见的音频编码格式有 AAC、MP3、AC3

AAC

一种专门为声音数据设计的文件压缩格式，与MP3不同，它采用了全新的算法进行编码，更加高效和高性价比。利用AAC格式，在感觉声音质量没有明显降低的前提下（并且音质比MP3更好），可使文件更加小巧。
缺点：有损压缩，与时下流行的

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.]]></description><category></category></item><item><title><![CDATA[Android面试官：Window连环十二问你顶得住吗？，flutter面试题]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122234677</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122234677</guid><author>flutter001</author><pubDate>Thu, 30 Dec 2021 13:28:33 +0800</pubDate><description><![CDATA[面试官：关于Window，你了解多少呢？
看看下面这些问题你都能答上来吗。
如果你遇到这些问题



Window是什么？和View的关系？


WindowManager是什么？和WMS的关系？


怎么添加一个Window？


Window怎样可以显示到锁屏界面


Window三种类型都存在的情况下，显示层级是怎样。


Window就是指PhoneWindow吗？


PhoneWindow什么时候被创建的？


要实现可以拖动的View该怎么做？


Window的添加、删除和更新过程。


A]]></description><category></category></item><item><title><![CDATA[Android面经：我的阿里春招之路分享，五面后终拿到Offer]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122234615</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122234615</guid><author>flutter001</author><pubDate>Thu, 30 Dec 2021 13:24:52 +0800</pubDate><description><![CDATA[二面
二面很重要，二面很重要，二面很重要。二面对于你是否能通过面试，是否能最终从池子中被捞出来都很重要。一面面完的第二天下午收到来自杭州的电话，约了晚上九点的时间，且通知了视频面试和在线编程。
一阵慌张……看了那么多面经，没见过谁连续两次编程的……晚上九点，准时登录视频网址后，面试官已经在线。二面面试官稍显严肃，给人感觉非常严谨。上来简单自我介绍后，他说一面评价比较好，他会面试得细致一点，可能时间会稍长。当时心神一紧，做好了鏖战的准备。二面问的内容非常多，且覆盖范围很广，大概问题如下：
JVM方面

jav]]></description><category></category></item><item><title><![CDATA[Android面经分享，失业两个月，五一节前拿到Offer，十年Android编程开发生涯]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122234592</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122234592</guid><author>flutter001</author><pubDate>Thu, 30 Dec 2021 13:23:56 +0800</pubDate><description><![CDATA[接下来是面试题：
公司一
===================================================================


组件化和arouter原理


recyclerview和listview区别


glide流程，缓存前压缩，缓存命中


APP性能优化，内存优化，布局优化，绘制优化，内存泄漏


Http和Https区别


socket心跳包


jvm虚拟机，堆和栈的结构


activity启动模式，有哪些不同


stack栈的特点，自定义sta]]></description><category></category></item><item><title><![CDATA[Android隐藏系统状态栏（沉浸式状态栏）和设置状态栏颜色]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122234570</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122234570</guid><author>flutter001</author><pubDate>Thu, 30 Dec 2021 13:23:01 +0800</pubDate><description><![CDATA[如果我猜对了，那么就继续看吧！
2. 重新设置你的TitleBar
这个解决方法更简单，就是改变TitleBar的高度和paddingTop，看下面示例就会豁然开朗：
if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.KITKAT) {
ViewGroup.LayoutParams params = view.getLayoutParams();
int topMargin = getStatusBarHeight(view.getContext()).]]></description><category></category></item><item><title><![CDATA[Android开发要达到阿里P7水平，很难吗，rxjava面试题]]></title><link>https://blog.youkuaiyun.com/flutter001/article/details/122215946</link><guid>https://blog.youkuaiyun.com/flutter001/article/details/122215946</guid><author>flutter001</author><pubDate>Wed, 29 Dec 2021 14:52:33 +0800</pubDate><description><![CDATA[但工作过一年后你会发现，自己的工作重点就是**将找各种各样的组件、框架，拖拖拽拽，改改样式。**在极端情况下出现了问题后（比如部分机型上崩溃，加载图片慢），也不知道该如何解决！
造成这种局面的原因：自己的意识不够，格局受限，在向上提升方面也没有完整的规划。
一，职业发展规划


从自身规划的角度讲，技术上的进阶分如下几个阶段：

1.做好业务需求的功能。这个是初级程序员就应该有的能力。
2.解决极端情况下的技术问题，比如性能优化，OOM等。
稍有点规模的公司，肯定都会遇到这种问题，比如上文中说的App在部分]]></description><category></category></item></channel></rss>