<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SylG17的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SylG17</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SylG17]]></copyright><item><title><![CDATA[android向U盘中拷贝文件成功后立刻断开，文件0字节]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/107816854</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/107816854</guid><author>SylG17</author><pubDate>Wed, 05 Aug 2020 15:43:41 +0800</pubDate><description><![CDATA[用OutputStream写入Sd上的文件，写完后会有打印提示，如果立即把机器断电，再打开被写入的文件，发现成了0字节。一直怀疑是写在缓存，没同步到磁盘，于是在write()后加了个flush()，结果还是0字节。是因OutputStream是字节流，其写入操作不会用到缓存。

所以flush根本没用。但OutputStream又找不到一个类似linux中的sync()方法，所幸在论坛找到一同样问题的帖子，终于找到解决方法：

用OutputStream的子类FileOutputStream打开文件，Fil]]></description><category></category></item><item><title><![CDATA[使用addr2line对JNI的Crash堆栈信息分析]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/106340742</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/106340742</guid><author>SylG17</author><pubDate>Mon, 25 May 2020 20:02:29 +0800</pubDate><description><![CDATA[目的：使用addr2line对库中的崩溃定位到具体的代码行

步骤：

1.获取崩溃产生的记录堆栈信息的墓碑文件tombstone


*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'alps/full_nb6797_6c_m/nb6797_6c_m:6.0/MRA58K/1583238338:user/test-keys'
Revision: '0'
ABI: 'arm'
pid: 19]]></description><category></category></item><item><title><![CDATA[【Android 10】深色主题]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/106098079</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/106098079</guid><author>SylG17</author><pubDate>Wed, 13 May 2020 14:56:50 +0800</pubDate><description><![CDATA[我们一直以来使用的操作系统都是以浅色主题为主的，这种主题模式在白天或者是光线充足的情况下使用起来没有任何问题，可是在夜晚灯光关闭的情况下使用就会显得非常刺眼。

于是，许多应用程序为了能够让用户在光线昏暗的环境下更加舒适地使用，会在应用内部提供一个一键切换夜间模式的按钮。当用户开启了夜间模式，就会将应用程序的整体色调都调整成更加适合于夜间浏览的颜色。

不过，这种由应用程序自发实现夜间模式的方式很难做到全局统一，即有些应用可能支持夜间模式，有些应用却不支持。而且重复操作的问题也很让人头疼，比如说我在一个应用]]></description><category></category></item><item><title><![CDATA[api 与 implementation 的区别]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/103580295</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/103580295</guid><author>SylG17</author><pubDate>Tue, 17 Dec 2019 14:46:43 +0800</pubDate><description><![CDATA[gradle 从 3.4 开始，compile 已经被废弃了，取而代之的是 api | implementation，俩个我们都可以用，但是肯定还是有区别的：

api - 本地依赖时依赖不隔离，但是编译慢
	implementation - 本地依赖时依赖隔离，编译快
我们从 依赖隔离 | 编译速度 2个角度来看 api | implementation

依赖隔离

实际开始中我们有2种依赖方...]]></description><category></category></item><item><title><![CDATA[Android aar打包和jar打包]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/103579652</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/103579652</guid><author>SylG17</author><pubDate>Tue, 17 Dec 2019 14:39:12 +0800</pubDate><description><![CDATA[jar包和aar包的区别

jar：内含“assets"，“com”，“META-INF”，里面只包含class文件和清单文件，不包含资源文件，如res下的文件。

aar：class以及res下的所有的资源文件。必定包含AndroidManifest.xml，classes.jar，res，R.txt文件，可能还包含些其他文件。

/assets/ (可选)  /libs/*.jar (可选...]]></description><category></category></item><item><title><![CDATA[代码混淆和aar包遇到的坑]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/103569311</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/103569311</guid><author>SylG17</author><pubDate>Tue, 17 Dec 2019 10:04:58 +0800</pubDate><description><![CDATA[1.aar包是不嵌套aar包的，所以当我的项目中引用了别人的aar，而我又需要向其他人提供我的aar的时候，就出现了aar嵌套，而aar是不包含aar包的，所以解决这个问题：

①我给客户提供我的aar和我引用的别人的aar。

②将别人的aar换成jar包的形式，即可以打进我的aar中提供给客户。

2.我是将别人给我的aar让他换成了jar的形式，然后放入我的工程中，混淆打成一个aar包提...]]></description><category></category></item><item><title><![CDATA[Android studio依赖包aar的使用]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/103481708</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/103481708</guid><author>SylG17</author><pubDate>Tue, 10 Dec 2019 20:33:16 +0800</pubDate><description><![CDATA[aar和jar包的区别：

aar可以包含资源文件，例如drawable、layout等。所以可以把资源文件一起放入aar包中复用，在弄一些会使用到这些资源文件的，如自定义控件的时候就会十分方便。



将module配置为aar文件：

首先要把module配置为library，即在module中的gradle设置：

由


apply plugin: 'com.android.applic...]]></description><category></category></item><item><title><![CDATA[thread导致的内存泄漏实例——为什么使用静态内部类避免内存泄漏]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/102662752</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/102662752</guid><author>SylG17</author><pubDate>Mon, 21 Oct 2019 14:33:10 +0800</pubDate><description><![CDATA[背景：有个数据库处理类，包含一个thread负责对数据库进行写入（耗时操作）。该thread在某个fragment中会被重新初始化并开始。




        private void updateBookShelf() {
            Globals.getInstance().setBookShelves(bookShelves);
            if (Globa...]]></description><category></category></item><item><title><![CDATA[android webview js交互]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/100145169</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/100145169</guid><author>SylG17</author><pubDate>Thu, 29 Aug 2019 19:48:31 +0800</pubDate><description><![CDATA[最近做的项目中有android和h5交互部分 总结如下

一、android调用h5方法

在Android端主要使用WebView来进行网页的加载，设置属性


// 获取WebSetting对象
WebSettings webSettings = webview.getSettings();
// 设置支持javascript
webSettings.setJavaScriptEnabled...]]></description><category></category></item><item><title><![CDATA[FragmentStatePagerAdapter和FragmentPagerAdapter的区别]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/98076351</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/98076351</guid><author>SylG17</author><pubDate>Thu, 01 Aug 2019 17:04:43 +0800</pubDate><description><![CDATA[对于销毁一个fragment

FragmentStatePagerAdapter：


public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        Fragment fragment = (Fragment)object;
        if (thi...]]></description><category></category></item><item><title><![CDATA[http get和post的区别]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/97521344</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/97521344</guid><author>SylG17</author><pubDate>Sat, 27 Jul 2019 15:45:52 +0800</pubDate><description><![CDATA[什么是http？
	get、post常见的区别
	get和post不同点的误区
	附录常见的http状态码




1.什么是http

这里只是简单概述一下，更多详情可以参见：

基于tcp/ip、一种网络应用层协议、超文本传输协议HyperText Transfer Protocol
	工作方式：客户端请求服务端应答的模式
	快速：无状态连接，灵活：可以传输任意对象，对象类型由Conten...]]></description><category></category></item><item><title><![CDATA[Fragment  not attached to a context]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/94392357</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/94392357</guid><author>SylG17</author><pubDate>Mon, 01 Jul 2019 15:12:03 +0800</pubDate><description><![CDATA[源码：


/**
     * Return the {@link Context} this fragment is currently associated with.
     *
     * @throws IllegalStateException if not currently associated with a context.
     * @see #getContext(...]]></description><category></category></item><item><title><![CDATA[设置图片缩放方法失效 解决办法设置android:scaleType属性]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/88716367</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/88716367</guid><author>SylG17</author><pubDate>Thu, 21 Mar 2019 15:37:50 +0800</pubDate><description><![CDATA[使用matrix.setScale()方法设置缩放失效，界面没有效果


                Matrix matrix = new Matrix();
                PointF midPoint = new PointF();
                midPoint.x = tmp.imageView.getWidth()/2 ;
           ...]]></description><category></category></item><item><title><![CDATA[使用有效负荷payloads优化RecyclView性能 避免不变部分闪屏]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/88574549</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/88574549</guid><author>SylG17</author><pubDate>Fri, 15 Mar 2019 15:07:16 +0800</pubDate><description><![CDATA[如图示的相册功能，需求是通过实体按键上下左右选择或者点击选择的时候，被选中的item显示蓝色外边框。实现后发现被选中item和取消选中的item有闪屏现象。



解决办法，重写onBindViewHolder(ViewHolder holder, int position, List&amp;lt;Object&amp;gt; payloads)：


@Override
    public vo...]]></description><category></category></item><item><title><![CDATA[Exifinterface图片扩展信息EXIF]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/87981381</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/87981381</guid><author>SylG17</author><pubDate>Wed, 27 Feb 2019 17:21:14 +0800</pubDate><description><![CDATA[　　一、ExifInterface类给我们了一个实用的方法publicbyte[]getThumbnail()这个方法可以生成一个缩略图，返回一个字节数组，我们通过以前讲到的通过OutputStream将其保存成一个JPG文件。当然如果要是显示到一个Drawable对象，可以通过decodeByteArray(byte[],int,int)类来解析这个字节数组，不过具体生成的分辨率还不清楚。
　　...]]></description><category></category></item><item><title><![CDATA[getMeasuredHeight获取控件高度为0]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/87860130</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/87860130</guid><author>SylG17</author><pubDate>Thu, 21 Feb 2019 14:45:01 +0800</pubDate><description><![CDATA[获取控件高度的时候我们用到getMeasuredHeigh()t和getHeight()，他们两个的区别就是getHeight获取的是屏幕内的高度，而getMeasuredHeigh()获取到的是控件实际的高度，即使是在屏幕外边。

 

在开发项目的时候遇到了一个情况是使用PopupWindow做了一个弹窗，弹窗的底部和根视图中某一个控件的顶部对齐。

 

用到了showAsDropDown(...]]></description><category></category></item><item><title><![CDATA[Android媒体库]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/86640056</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/86640056</guid><author>SylG17</author><pubDate>Fri, 25 Jan 2019 11:07:26 +0800</pubDate><description><![CDATA[现象：连接电脑查看设备sd卡内的新拍的图片找不到

 

Android媒体库：

Android的媒体库其实就是一个数据库文件，当系统启动完成、SD卡插拔或者接收到“Intent.ACTION_MEDIA_SCANNER_SCAN_FILE”广播消息时，系统会扫描文件系统中的数据，将新增和删除的文件信息更新到这个数据库中，这样当其它程序获取文件系统中的文件信息时，直接操作这个数据库就行了，不用去...]]></description><category></category></item><item><title><![CDATA[倒序ArrayList中的方法]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/86241309</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/86241309</guid><author>SylG17</author><pubDate>Thu, 10 Jan 2019 16:59:09 +0800</pubDate><description><![CDATA[
Collections.reverse(controlCarList);

 

源码：


/**
     * Reverses the order of the elements in the specified list.&amp;lt;p&amp;gt;
     *
     * This method runs in linear time.
     *
     * @param  list ...]]></description><category></category></item><item><title><![CDATA[多渠道打包应用加载不同的SDK]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/85697973</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/85697973</guid><author>SylG17</author><pubDate>Thu, 03 Jan 2019 15:33:26 +0800</pubDate><description><![CDATA[遇到一个项目，需求场景是使用了OCR识别，由于暂未确定采购方案，因此对三种不同的厂家的SDK均集成进项目，打包出三种不同的APK。

 

一、首先多渠道打包部分：

manifest：

设置了一个key为THIRD_SDK的占位符


&amp;lt;meta-data android:name=&quot;THIRD_SDK&quot;
            android:value=&quot;${THIRD_SDK}&quot;&amp;...]]></description><category></category></item><item><title><![CDATA[安卓按下Home键至手机桌面后，重新点开应用时无法进入退出时的页面]]></title><link>https://blog.youkuaiyun.com/SylG17/article/details/85325975</link><guid>https://blog.youkuaiyun.com/SylG17/article/details/85325975</guid><author>SylG17</author><pubDate>Fri, 28 Dec 2018 16:29:55 +0800</pubDate><description><![CDATA[现象发生的情况是安装完成之后点击打开运行APP，从MainActivity进入AActivity后，按home回到主界面，再点击图标把APP切回前台运行的话发现打开的是MainActivity不是AActivity。

但是如果安装的时候点击完成，再打开APP就不会这样，具体原因未知，可能是系统的bug吧。

 

解决办法是在MainActivity中加上：


if ((getIntent()...]]></description><category></category></item></channel></rss>