<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[domyself918的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/domyself918</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; domyself918]]></copyright><item><title><![CDATA[Android中对于点击事件的深度梳理（六）]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/158460742</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/158460742</guid><author>domyself918</author><pubDate>Sat, 28 Feb 2026 09:45:00 +0800</pubDate><description><![CDATA[我们继续来看ViewGroup的dispatchTouchEvent方法,在ACTION_DOWN过程一切是按照没有拦截的逻辑来的，和之前的逻辑是一样的，就不用看了，这里重点看当第一个ACTION_MOVE事件到达后是怎样处理的，为何会多出来一个CANCEL.= null) {////move阶段，mFirstTouchTarget在down阶段已赋值。回到LinearLayout在move拦截的情况，button在接收到down事件后，是否可以阻止父组件对move事件的拦截呢，如果仔细观察的话，]]></description><category></category></item><item><title><![CDATA[Android中对于点击事件的深度梳理（五）]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/158388002</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/158388002</guid><author>domyself918</author><pubDate>Fri, 27 Feb 2026 09:45:00 +0800</pubDate><description><![CDATA[在viewGroup层面的dispatchTouchEvent方法的执行中，move和up事件的流程是一样的。至此，完整的 down ---> move ----> move ---> ..... ---> up 事件链条完成。这里的逻辑是通过handler执行了一个Runnable任务，也就是代码中的PerformClick任务，而在dispatchTransformedTouchEvent里面，也会走到onTouchEvent方法。也由此可见，只有接收到up事件，onclick才会执行。]]></description><category></category></item><item><title><![CDATA[Android中对于点击事件的深度梳理（四）]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/157770447</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/157770447</guid><author>domyself918</author><pubDate>Fri, 06 Feb 2026 17:34:20 +0800</pubDate><description><![CDATA[换个说法，如果button的onTouchEvent返回了false,那么这里的mFirstTouchTarget==null,也就会执行当前ViewGroup自己的onTouchEvent，而不会分发给button。在分析dispatchTransformedTouchEvent这个方法之前，接合上面代码，考虑一个问题，如果我们的mFirstTouchTarget为null,那么这里的ACTION_MOVE事件就会被当前ViewGroup自己执行。并没有对应的实际性的代码，看来心心念念的并没有发生哦。]]></description><category></category></item><item><title><![CDATA[Android中对于点击事件的深度梳理（三）]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/157723153</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/157723153</guid><author>domyself918</author><pubDate>Wed, 04 Feb 2026 13:29:13 +0800</pubDate><description><![CDATA[现在我们的ACTION_DOWN事件终于来到了button,我们来看button是怎样处理的。]]></description><category></category></item><item><title><![CDATA[Android中对于点击事件的深度梳理（二）]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/157651074</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/157651074</guid><author>domyself918</author><pubDate>Tue, 03 Feb 2026 14:30:20 +0800</pubDate><description><![CDATA[上面三步，找到了应该接收这个点击事件的子view,结合例子，当前viewgroup的实例是decoreView,我们点击了button，那么此时这个child实例应该是decoreview的直接子view,也就是id为com.android.internal.R.id.content的framelayout。i--) {//这里注意，是倒序排，也就是视觉上的view从前往后排。│ （View类型，无子View，分发终止，执行自身事件处理） │ └────────────────────────────┘。]]></description><category></category></item><item><title><![CDATA[Android中对于点击事件的深度梳理（一）]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/157464291</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/157464291</guid><author>domyself918</author><pubDate>Fri, 30 Jan 2026 16:46:40 +0800</pubDate><description><![CDATA[继续去FrameLayout,并没有找到这个方法，因为FrameLayout extends ViewGroup,去ViewGroup中查看，总算找到了之前脑海里的方法。也就是说在一次点击中，有一个ACTION_DOWN和ACTION_UP，中间会有很多的MOVE事件。如果这个方法返回的是false的话，那么就会去执行Activity的onTouchEvent方法。如果在ontouchEvent中打印，会发现在一次点击事件中，ACTION先后到达是这样的。在 Android 中，事件分发机制的核心是。]]></description><category></category></item><item><title><![CDATA[最近的面试，被打击了（随笔）]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/154234504</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/154234504</guid><author>domyself918</author><pubDate>Sat, 01 Nov 2025 11:43:35 +0800</pubDate><description><![CDATA[第二次面试，一个当地的大厂，问了一些软件上的优化问题，比如内存溢出、ANR之类，题是不难，但是只能说这个东西很看运气，我恰好最近在写公司的前端项目，没碰过安卓，恶补的知识都扑到了AMS,WMS这一块，对内存溢出、ANR这些问题没有统一的整理，导致说的都是想到什么说什么，非常零散，后来一打听，果真是没过。第四次面试，另一个当地的大厂，我在之前的经验上，觉得应该没啥问题了，结果对方又对我当产品经理的工作经验感兴趣了，在业务流程上问了很多，哎，只能谁凭着回忆说了下流程，肯定又有很多不对的地方。]]></description><category></category></item><item><title><![CDATA[记录创建项目第三方库版本过高的问题]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/153776522</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/153776522</guid><author>domyself918</author><pubDate>Thu, 23 Oct 2025 11:39:39 +0800</pubDate><description><![CDATA[2.对于无法搜到版本的，但是依然报错，很可能就是一些依赖又引用了其他的依赖，这个时候在命令行窗口执行./gradlew app:dependencies，可以很清楚的看到项目的依赖关系。如果还有不同依赖共同引用了同一个第三方，但是版本不同导致的情况的话，在dependencies可以将这个被引用的依赖的版本固定。1. build的日志中，出现了版本号之后，直接全局搜版本号，对于能在代码中找到具体版本的，则直接改版本号，具体改成哪个版本，去。搜索，找到你的运行的匹配的sdk发版之前的。]]></description><category></category></item><item><title><![CDATA[compilesdk是Android11的compose项目]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/153734109</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/153734109</guid><author>domyself918</author><pubDate>Wed, 22 Oct 2025 15:06:46 +0800</pubDate><description><![CDATA[下载Android studio，选择在Android12发布之前的版本，这个版本创建的一般都可以很好的兼容当时的最新Android版本，即Android11。新建project(选择kotlin语言)，会自动创建匹配的gradle和对应的kotlin.这个仓库查找到compose的包，然后看它的发布时间，也要卡在Android12发布之前。这个时候，就创建好了一个kotlin和项目的jdk不冲突的应用。同理，这个compose的版本我也是反复试验得出的。匹配Android11的compose项目。]]></description><category></category></item><item><title><![CDATA[flutter doctor提示cmdline-tools component is missing错误的解决]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/146423917</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/146423917</guid><author>domyself918</author><pubDate>Fri, 21 Mar 2025 16:57:37 +0800</pubDate><description><![CDATA[=  flutter doctor检测环境后报错如下:   ==]]></description><category></category></item><item><title><![CDATA[记uniapp总动态:style无法用带参数的computed属性问题]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/135425381</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/135425381</guid><author>domyself918</author><pubDate>Sat, 06 Jan 2024 14:11:05 +0800</pubDate><description><![CDATA[v-for里面的组件呢，我要根据不同的item配置不同的style,于是有了这样的写法。小感悟：写代码不要太固执，打不过就加入，主打一个曲线救国。然后一运行 ，就给报错。这样，就可以了，主要。]]></description><category></category></item><item><title><![CDATA[vscode中uniapp项目无法编译生成dist 也不报错的解决办法]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/135388116</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/135388116</guid><author>domyself918</author><pubDate>Thu, 04 Jan 2024 16:27:19 +0800</pubDate><description><![CDATA[我寻思这manifest.json我也没改啥啊，但是当我还原回项目自带的manifest.json后，一切又都好了。毫无提示，当下就觉得不对劲，果然在微信开发工具里面看到编译后的代码的部分还是修改之前的代码，然后手动删除了dist文件夹，重新运行了指令，还是不行。在新建项目后，新项目本身是自带一些基础文件的，如package.json，manifest.json等。折腾半天，依旧不行，决定新建个项目，把代码一点点拷到新项目中去。啊，就是这个逗号导致我查了半天的错查不出来，😤。]]></description><category></category></item><item><title><![CDATA[uniapp + vue2 样式加deep关键字后仍无法穿透问题]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/135017509</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/135017509</guid><author>domyself918</author><pubDate>Fri, 15 Dec 2023 15:15:54 +0800</pubDate><description><![CDATA[1.进行向下穿透的父组件加入options: { styleIsolation: 'shared' } ,这个属性2.一定要是 ::v-deep 我用之前vue2网页端时写的:deep也是不生效的。这个也很重要！！]]></description><category></category></item><item><title><![CDATA[javascript异步---promise和async await]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/132147359</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/132147359</guid><author>domyself918</author><pubDate>Thu, 17 Aug 2023 11:23:52 +0800</pubDate><description><![CDATA[当网络请求成功时会调用该promise中的构造函数中的resolve方法，有错误时则调用reject方法。Promise 构造函数接受一个函数作为参数，该函数是同步的并且会被立即执行，所以我们称之为起始函数。从代码中可以看出，打印error的函数是在promise的catch的函数中被调用。promise间隔2秒回调，promise2间隔1秒回调，应该是promise2早返回，但是因为它是串联在promise后面的所以依然等待promise执行完之后再进行了调用。所以在promise的解释页是这样说明的。]]></description><category></category></item><item><title><![CDATA[Android 转Vue前端的思想转变]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/131964048</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/131964048</guid><author>domyself918</author><pubDate>Mon, 31 Jul 2023 16:42:37 +0800</pubDate><description><![CDATA[接触vue一段时间后，感觉vue和app开发还是有很大不同的。在开发APP转向开发网页等前端之前，如果在思想上有一些提前准备的话，可能接受起来会事半功倍。只是一些我自己接触下来vue的一些想法 记录一下。]]></description><category></category></item><item><title><![CDATA[vue动态更改主题颜色的一些想法]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/126370779</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/126370779</guid><author>domyself918</author><pubDate>Tue, 16 Aug 2022 18:12:27 +0800</pubDate><description><![CDATA[vite+vue3动态更改全局scss变量]]></description><category></category></item><item><title><![CDATA[vue3 + vite引入scss全局变量]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/124661580</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/124661580</guid><author>domyself918</author><pubDate>Mon, 09 May 2022 10:56:21 +0800</pubDate><description><![CDATA[情境：

使用了element-plus并按照官方加入了自定义主题的css.也有自己的全局变量globalstyle.scss文件。

需求：

想把globalstyle.scss文件中的代码可以每个vue文件中的&lt;style&gt;代码块访问到。

解决过程：

全局变量前：

globalstyle.scss的引入方式(在index.html中引入)


//index.html
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&..]]></description><category></category></item><item><title><![CDATA[vue初学者对于export 和 export default的一些思考]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/124474200</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/124474200</guid><author>domyself918</author><pubDate>Thu, 28 Apr 2022 14:58:11 +0800</pubDate><description><![CDATA[export 和export default的区别


1.

export default 只能有一个
	export 可以有多个
2.

export default 因为是值传递，所以可以匿名
	export 必须指明名字
3.

export 对应的import要加{ }
	export default 对应的import不用{ } ,import的名字默认为导出的匿名数据命名


export 的对象，方法或数据类型需要指定导出名称，且在import是需要加入大括号。

export def...]]></description><category></category></item><item><title><![CDATA[7.0以上android.os.FileUriExposedException: file:///storage/emulated/0/xxx.xxx exposed beyond app的bug解决]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/123531263</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/123531263</guid><author>domyself918</author><pubDate>Wed, 16 Mar 2022 17:42:38 +0800</pubDate><description><![CDATA[公司开发的Android屏幕设备升级到了11，在进行apk升级进行存储本地的过程中报错

1.首先将apk下载到项目的专属文件夹中，Android/data/包名/

2.上面这个错误就是读取该文件的Uri的时候报的错。

从 Android N 开始，将不允许在 App 间，使用 file:// 的方式，传递一个 File ，（之前的uri的获取方式）否者会抛出 FileUriExposedException的错误，会直接引发 Crash。

那么解决方案为：

1.首先在AndroidManifest.]]></description><category></category></item><item><title><![CDATA[Python 进行debug的错误most likely due to a circular import]]></title><link>https://blog.youkuaiyun.com/domyself918/article/details/123379364</link><guid>https://blog.youkuaiyun.com/domyself918/article/details/123379364</guid><author>domyself918</author><pubDate>Wed, 09 Mar 2022 16:08:38 +0800</pubDate><description><![CDATA[最近在学习爬虫，准备debug，就是点击那个小瓢虫的时候出现了一行错误



ImportError: cannot import name 'namedtuple' from partially initialized module 'collections' (most likely due to a circular import)

就是说有循环的导入。

循环导入是什么？

a.py


from b import b01


def a01:
    pass

print('我是a,我引入了b]]></description><category></category></item></channel></rss>