<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[random_7474的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/random_7474</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; random_7474]]></copyright><item><title><![CDATA[在尝试使用ViewPager2+Fragment组合并实现Fragment懒加载时发现的小神奇]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/130993405</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/130993405</guid><author>random_7474</author><pubDate>Thu, 01 Jun 2023 18:09:36 +0800</pubDate><description><![CDATA[google还是毁灭吧]]></description><category></category></item><item><title><![CDATA[时间，数字,货币国际化展示方案]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/128442302</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/128442302</guid><author>random_7474</author><pubDate>Mon, 26 Dec 2022 11:46:21 +0800</pubDate><description><![CDATA[全世界各个国家的时间，或数字的展示习惯是不同的比如：同样是2022年12月1日在美国他们喜欢把年放前面，也就是：12月1日2022年法国喜欢把日放前面：1日12月2022年如果在法国地区展示时间跟国内一样的顺序，法国人就会很不舒服，就像咱们现在看法国的时间顺序一样，能看懂，但是不得劲儿。所以有全球化项目的需求时，时间的展示规则就很重要。但是如果我们自己去做这种适配，不同地区不同国家，甚至一个app内不同的场景都自己写规则那显然是不现实的。好在前人种树，后人乘凉。]]></description><category></category></item><item><title><![CDATA[kotlin 好用的功能技巧和踩到的坑]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/106556092</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/106556092</guid><author>random_7474</author><pubDate>Thu, 04 Jun 2020 19:01:14 +0800</pubDate><description><![CDATA[前言，本文章并不是教学向的文章，本文意在总结和分享在实际使用kotlin进行开发时踩到的坑和好用的特性的分享，需要具备kotlin基础知识后在来阅读，如果你想找一篇教学类的文章，那可能中文官网更适合你。
让人关注的特性
官网最大宣传点有四个：

*安全

空检查


*互操作Java，kotlin互相调用

可以绕过kotin的空检查，在kotlin文件获取java对象时


简洁

方便的使用技巧
值得注意的特性和功能


工具友好 as的支持

中文官网
英文官网
一，空检查，空判断
简单来说就是：声明]]></description><category></category></item><item><title><![CDATA[（GOF23设计模式）一，代码设计的基本原则]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/106350864</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/106350864</guid><author>random_7474</author><pubDate>Tue, 26 May 2020 11:00:27 +0800</pubDate><description><![CDATA[类之间的关系

根据类与类之间的耦合度从弱到强排列，UML 中的类图有以下几种关系：依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等，它们是最强的。

依赖关系

某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类（被依赖类）中的某些方法来完成一些职责

关联关系
一般关联关系

一个类的对象作为另一个类的成员变量来实现关联关系

聚合关系

强关联关系,是 has-a 的关系
聚合关系也是通过成员对象来实现的，其中成员对象是整体对象的一部分，但是成]]></description><category></category></item><item><title><![CDATA[flutter 配置时小问题合集（持续更新）]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/105468924</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/105468924</guid><author>random_7474</author><pubDate>Sun, 12 Apr 2020 14:08:45 +0800</pubDate><description><![CDATA[flutter 配置时小问题合集
1.android studio 卡在create_project
实际上已经创建了项目，但是因为网络问题，或者其他原因导致了创建失败，但是看不到错误信息，因为卡在那个进度条的位置了
解决办法：
我的方法是直接用命令行来创建项目，用android studio打开，因为命令行创建出现任何问题都能看见输出，而且也可以直接cmd+c取消进程
命令行创建：
flutte...]]></description><category></category></item><item><title><![CDATA[Mac修改默认shell配置（这里为fish）]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/105468890</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/105468890</guid><author>random_7474</author><pubDate>Sun, 12 Apr 2020 14:07:32 +0800</pubDate><description><![CDATA[配置fish为默认shell
查看所有shell及位置
cat /etc/shells
输出
#List of acceptable shells for chpass(1).

#Ftpd will not allow users to connect who are not using

#one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/b...]]></description><category></category></item><item><title><![CDATA[记录问题BaseRecyclerViewAdapterHelper]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/103567915</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/103567915</guid><author>random_7474</author><pubDate>Mon, 16 Dec 2019 18:47:21 +0800</pubDate><description><![CDATA[记录问题BaseRecyclerViewAdapterHelper
简单说就是在上啦加载，下拉刷新的分页列表的需求下使用BaseRecyclerViewAdapterHelper的loadMore功能，并且父控件是NestedScrollView时会导致无限加载更多，直到最后一页

在recyclerView的高度设置成wrap_content,并且父控件是NestedScrollView，使用的...]]></description><category></category></item><item><title><![CDATA[关于后台语言选择的小记]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/101681258</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/101681258</guid><author>random_7474</author><pubDate>Sun, 29 Sep 2019 14:09:11 +0800</pubDate><description><![CDATA[首先，选择一门语言做后台开发我考量的纬度有那些，重 - 幕布






首先，选择一门语言做后台开发我考量的纬度有那些，重要程度对我来说大概是怎么样的语言本身是否适合(什么叫是否适合，标准是什么，这个标准当然只针对我个人啦)我希望是强类型的(并不强制)本来我喜欢若类型，脚本语言，但是查了很多资料之后，很多人说若类型不适合做后台，主要原因有：类型不确定，代码不安全，你不知道变量到你运行的时候...]]></description><category></category></item><item><title><![CDATA[adb wifi连接多个设备]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/101216566</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/101216566</guid><author>random_7474</author><pubDate>Mon, 23 Sep 2019 17:53:42 +0800</pubDate><description><![CDATA[#adb wifi连接多个设备
还没有wifi连接的设备时
1.将手机和电脑连接在一个wifi下
2.查看手机IP地址

adb -s [设备] shell ifconfig wlan0
inet addr就是手机的ip地址

3.adb tcpip 5555

这个命令会以后面的端口号重启adb

4.adb connect 手机ip:端口号
当还没有wifi连接的设备时这样就已经可以成功
当已...]]></description><category></category></item><item><title><![CDATA[单元测试-repo-断言小记]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/100544259</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/100544259</guid><author>random_7474</author><pubDate>Wed, 04 Sep 2019 18:00:51 +0800</pubDate><description><![CDATA[记录一下在写repo类的单元测试时遇到的问题

测试框架使用Robolectric+Mockito
网络框架：rxjava2+retrofit2

最初我自己写TestRule继承ExternalResource来帮我做一下执行repo单元测试方法之前和之后应该做的事，例如：
1.登陆取获usertoken
2.重置数据库，在`Robolectric`框架下不重置会出现问题

结束时
1.做断言
...]]></description><category></category></item><item><title><![CDATA[kotlin 向上转型问题]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/84345660</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/84345660</guid><author>random_7474</author><pubDate>Thu, 22 Nov 2018 17:33:24 +0800</pubDate><description><![CDATA[       animator.duration = HalfAnimationDuration
       animator.addUpdateListener {
           var message_width:Int = it.getAnimatedValue() as Int
           var lp = this.layoutParams
           lp...]]></description><category></category></item><item><title><![CDATA[android webview 网页动态插入javascript的正确姿势]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/82500567</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/82500567</guid><author>random_7474</author><pubDate>Fri, 07 Sep 2018 17:53:20 +0800</pubDate><description><![CDATA[android webview 网页动态插入javascript的正确姿势

{% codeblock lang:java %} 
  String  js = “var script = document.createElement(‘script’);”; 
  js+= “script.type = ‘text/javascript’;”; 
  js+=”script.src = ‘”+d...]]></description><category></category></item><item><title><![CDATA[记录一个小问题 ConstraintLayout textview宽高位置正常但文字内容会超出控件范围]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/82348812</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/82348812</guid><author>random_7474</author><pubDate>Mon, 03 Sep 2018 15:02:26 +0800</pubDate><description><![CDATA[

TextView的文字“紧关掉”被右面的imageview遮挡住了



其实空间宽度是正常的，可以看见空间并没有被挡住，是控件里面的内容冲出去了··· 


然而解决办法就是把图1中的那句代码去掉了，测试的时候写的代码一定要记得去掉，不然会出现意想不到的神奇效果...]]></description><category></category></item><item><title><![CDATA[多fragment内存优化]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/81279657</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/81279657</guid><author>random_7474</author><pubDate>Mon, 30 Jul 2018 09:39:12 +0800</pubDate><description><![CDATA[类似新闻内容页,viewpager加载多个fragment并且经常切换的需求,这种情况下的内存需要特别注意，一不小心处理不当很容易出现内存暴涨，频繁触发gc页面卡顿，甚至oom的情况，针对这种需求总结下面几点注意事项



注意事项

1.采用FragmentStatePagerAdapter
    FragmentStatePagerAdapter和FragmentPagerAdapter的主...]]></description><category></category></item><item><title><![CDATA[fragment 懒加载，新闻内容页类的多个fragment的优化]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/81205513</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/81205513</guid><author>random_7474</author><pubDate>Wed, 25 Jul 2018 16:36:24 +0800</pubDate><description><![CDATA[fragment 懒加载，新闻内容页类的多个fragment的优化



1.目标

1.fragment切换时只加载当前fragment不预加载前后的fragment
2.从当前fragment切出去时及时回收，节省内存




2.方案

1.setUserVisibleHint(boolean isVisibleToUser)
    该方法获取当前fragment是否对用户可见：
   ...]]></description><category></category></item><item><title><![CDATA[error_javaWithjavac]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/80703205</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/80703205</guid><author>random_7474</author><pubDate>Fri, 15 Jun 2018 11:31:40 +0800</pubDate><description><![CDATA[kotlin中使用getClass()为方法名，出现编译时不出错，运行时报错但是找不到具体报错位置的问题， 
原因是getClass()每个类都有这个方法，编译打包时出问题...]]></description><category></category></item><item><title><![CDATA[android 依赖冲突解决]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/80703182</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/80703182</guid><author>random_7474</author><pubDate>Fri, 15 Jun 2018 11:30:49 +0800</pubDate><description><![CDATA[解决冲突 
1.exclude 
    implementation('com.zhy:autolayout:1.4.5') { 
        exclude group: 'com.android.support' 
        } 
2.buildtoolversion,complie_sdk_version,target_sdk_version要超过v4,v7等包的版本 
3.使用...]]></description><category></category></item><item><title><![CDATA[android 旋转动画一直转,不卡顿]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/80703121</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/80703121</guid><author>random_7474</author><pubDate>Fri, 15 Jun 2018 11:26:37 +0800</pubDate><description><![CDATA[一直转的旋转动画中间有停顿的只要原因是，旋转动画的旋转速度不是一直不变的，是有加速过程的，所以解决这个问题就可以让旋转动画一直转，不停顿：


rotateAnimation = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        rotateAnim...]]></description><category></category></item><item><title><![CDATA[反编译apk加入jar包在重新打包签名的方法]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/78055402</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/78055402</guid><author>random_7474</author><pubDate>Thu, 21 Sep 2017 18:31:30 +0800</pubDate><description><![CDATA[反编译apk将自己的jar包加进去在重新打包签名1.将apk用apktool反编译命令：java -jar apktool d xxx.apk2.将将要放入目标apk的jar包使用apktool反编译3.将jar的smali文件和资源文件等全部加入 目标apk反编译后的文件夹中4.修改目标apk反编译文件的smali源代码5.用apktool工具将目标反编译文件反打成包命令：java -jar ap]]></description><category></category></item><item><title><![CDATA[android关闭其他app]]></title><link>https://blog.youkuaiyun.com/random_7474/article/details/74347896</link><guid>https://blog.youkuaiyun.com/random_7474/article/details/74347896</guid><author>random_7474</author><pubDate>Tue, 04 Jul 2017 17:49:15 +0800</pubDate><description><![CDATA[1.am.killBackgroundProcesses(String packageName); 
    这个方法只能停止在后台的应用，如果应用在前台就不能用。 
2.andorid.os.Process.killProcess(int pid); 
这个方法对于前台应用同样没用，因为的我需求时杀死前台的app所以没有测试后台是否能够杀死,但是这个用来大范围的杀死后台进程是比较好用的，代码可以参]]></description><category></category></item></channel></rss>