<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[erone的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/erone</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; erone]]></copyright><item><title><![CDATA[targetSdkVersion升到31后，编译提示需要android:exported]]></title><link>https://blog.csdn.net/erone/article/details/122827814</link><guid>https://blog.csdn.net/erone/article/details/122827814</guid><author>erone</author><pubDate>Tue, 08 Feb 2022 17:18:59 +0800</pubDate><description><![CDATA[最近要上架google，要求编译版本最低是30。我想着那就一步到位弄到31吧。

结果报错


/Users/erone/项目/xxx For Google/app/src/main/AndroidManifest.xml Error:
	android:exported needs to be explicitly specified for &lt;activity&gt;. Apps targeting Android 12 and higher are required to specify a..]]></description><category></category></item><item><title><![CDATA[windows下如何把flutter项目打包成安装包]]></title><link>https://blog.csdn.net/erone/article/details/122695816</link><guid>https://blog.csdn.net/erone/article/details/122695816</guid><author>erone</author><pubDate>Wed, 26 Jan 2022 11:09:21 +0800</pubDate><description><![CDATA[开发的前置工作我们不提了，网上有很多教程。这里到最后一步，执行flutter build windows后，项目目录/build/windows/runner/Release文件夹下会有几个文件生成，我们就用这几个文件来生成windows安装包。

第一步

    下载Inno SetupInno Setup Downloads (jrsoftware.org)

网上有很多Inno Setup教程，这里说一下我的用法。

第二步

    打开Inno ...]]></description><category></category></item><item><title><![CDATA[VerticalGridView按行滑动（顶部滑出）]]></title><link>https://blog.csdn.net/erone/article/details/118165114</link><guid>https://blog.csdn.net/erone/article/details/118165114</guid><author>erone</author><pubDate>Wed, 23 Jun 2021 23:59:04 +0800</pubDate><description><![CDATA[众所周知，VerticalGridView如果不做设置，默认顶部和底部是会留下距离的，让获焦的行在中间。如何每次滑动一行，把上面的内容顶出屏幕呢？

简单几行设置。


 this.mList.setWindowAlignment(BaseGridView.WINDOW_ALIGN_LOW_EDGE);
 this.mList.setWindowAlignmentOffset(0);
 this.mList.setWindowAlignmentOffsetPercent(0f);
 this.mList.s]]></description><category></category></item><item><title><![CDATA[Flutter中更新listview的UI出现的问题]]></title><link>https://blog.csdn.net/erone/article/details/108013111</link><guid>https://blog.csdn.net/erone/article/details/108013111</guid><author>erone</author><pubDate>Fri, 14 Aug 2020 20:35:16 +0800</pubDate><description><![CDATA[背景：我有一个显示一天节目的listivew，用户点击节目表的下载icon可以下载，并在该位置实时更新下载进度

出现的错误：比如今天是2号，我下载了2号的第一个节目的视频。当我用1号，31号，30号或3号，4号，5号的节目更新listivew时，第一个节目会显示跟2号第一个节目一样的下载状态，但是我明明没有下载。

考虑的原因：

1.首先考虑的是回调的解绑是不是不及时。我在listview的item（每一个item都是一个statefulwidget）的initstate中向DownloadManage]]></description><category></category></item><item><title><![CDATA[Retrofit(okhttp3)遇到java.io.IOException: unexpected end of stream on Connection]]></title><link>https://blog.csdn.net/erone/article/details/90370841</link><guid>https://blog.csdn.net/erone/article/details/90370841</guid><author>erone</author><pubDate>Mon, 20 May 2019 10:51:03 +0800</pubDate><description><![CDATA[有人说加Connection close或者加retryOnFailed(true)，我都没有解决。我用的是这个方法解决了issus/3590

因为responseHeader里有一个gzip，我们在requestHeader里加入


builder.header("Accept-Encoding", "identity");

就可以了
...]]></description><category></category></item><item><title><![CDATA[Mac上反编译apk]]></title><link>https://blog.csdn.net/erone/article/details/82795018</link><guid>https://blog.csdn.net/erone/article/details/82795018</guid><author>erone</author><pubDate>Thu, 20 Sep 2018 23:09:56 +0800</pubDate><description><![CDATA[1,github上搜apktool, 下载地址，按照说明可以生成 apktool.jar和apktool（不带扩展名）两个文件
2,配置环境变量jdk,jre(一般android都已经配置) 
3,新建文件,命名apktool 
4,将apktool,apktool.jar,appt和要反编译的apk同时拷贝到该文件夹下 
5,输入java -jar apktool.jar d xxxx.apk ...]]></description><category></category></item><item><title><![CDATA[Android Architecture（安卓架构）的一些研究]]></title><link>https://blog.csdn.net/erone/article/details/81085385</link><guid>https://blog.csdn.net/erone/article/details/81085385</guid><author>erone</author><pubDate>Tue, 17 Jul 2018 17:43:32 +0800</pubDate><description><![CDATA[    最近在看Github上的一个叫Android Architecture的项目，里面包含几个小项目。项目用不同的架构来完成同一个功能。我挑些里面没见过的写法做下总结，规范一下自己的代码。

    1.Fragment的创建

    Fragment的创建要在Fragment里面创建一个newInstance的方法，像：


    public static TasksFragment ...]]></description><category></category></item><item><title><![CDATA[JS中的extend]]></title><link>https://blog.csdn.net/erone/article/details/80707232</link><guid>https://blog.csdn.net/erone/article/details/80707232</guid><author>erone</author><pubDate>Fri, 15 Jun 2018 16:47:21 +0800</pubDate><description><![CDATA[有这样的调用关系，这是使用的代码$('#btn').staFilter({
    selectEvent : function( startDate, endDate ){
        sDate = startDate;
	eDate = endDate;
    },
    initEvent : function( startDate, endDate) {
        sDat...]]></description><category></category></item><item><title><![CDATA[关于RecyclerView的报错 Inconsistency detected. Invalid view holder adapter positionViewHolder]]></title><link>https://blog.csdn.net/erone/article/details/80569387</link><guid>https://blog.csdn.net/erone/article/details/80569387</guid><author>erone</author><pubDate>Mon, 04 Jun 2018 16:47:56 +0800</pubDate><description><![CDATA[这是由于对数据源list的操作和对notify操作并没有顺序发生导致的。也就是说在移除list中的数据后，并没有紧接着告知adapter有数据已经移除，就会导致后面操作的报错。解决方法是，在list做完remove或者add操作后，紧跟着notifyItemInserted(notifyItemRangeInserted)或notifyDataSetChanged如何保证呢，就是要让他们在同一线程...]]></description><category></category></item><item><title><![CDATA[用Glide扩展图片加载，使其支持阿里云的OSS访问]]></title><link>https://blog.csdn.net/erone/article/details/80498152</link><guid>https://blog.csdn.net/erone/article/details/80498152</guid><author>erone</author><pubDate>Tue, 29 May 2018 16:25:23 +0800</pubDate><description><![CDATA[公司有款产品使用了阿里云的服务。

在之前的版本中，手机明文持有Key，拿到Key后可以进行上传操作。上传结束将返回的url（http开头）上传给服务器，服务器进行保存。

  这本来是个正常的逻辑，但是在后面我们遇到了搞鬼的，他拿到了Key并且开始上传黄色图片。

这时我们需要进行方案二，用户不持有key，登陆之后才能从服务器拿到key，并且key是有有效期限的，需要...]]></description><category></category></item><item><title><![CDATA[关于Kotlin踩过的一些坑]]></title><link>https://blog.csdn.net/erone/article/details/80282552</link><guid>https://blog.csdn.net/erone/article/details/80282552</guid><author>erone</author><pubDate>Fri, 11 May 2018 15:57:43 +0800</pubDate><description><![CDATA[关于变量声明首先我们可以声明成员变量var mediaPlayer: MediaPlayer但是这时AS会提示错误，必须初始化或者声明为lateinit初始化不用说我们肯定会声明为var mediaPlayer: MediaPlayer? = null后面使用的时候就会用mediaPlayer?.start()或者mediaPlayer!!.start()据我理解，前者是安全的，调用的时候不会报错...]]></description><category></category></item><item><title><![CDATA[Android Studio 3.0 没有 Analysis Results（Leaked Activities）]]></title><link>https://blog.csdn.net/erone/article/details/80237357</link><guid>https://blog.csdn.net/erone/article/details/80237357</guid><author>erone</author><pubDate>Tue, 08 May 2018 11:44:23 +0800</pubDate><description><![CDATA[在Android Profiler中点击白圈按钮保存后缀名为.hprof的文件，再用AS打开即有Analysis Results选项



答案来自StackOverFlow   @Shanki Bansal







]]></description><category></category></item><item><title><![CDATA[Kotlin下的MVVM]]></title><link>https://blog.csdn.net/erone/article/details/80047611</link><guid>https://blog.csdn.net/erone/article/details/80047611</guid><author>erone</author><pubDate>Mon, 23 Apr 2018 11:05:13 +0800</pubDate><description><![CDATA[一：配置DataBinding    主模块的build.gradle    apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'android {
    ...
    dataBinding {
        enabled = true
  ...]]></description><category></category></item><item><title><![CDATA[关于前端的那些事]]></title><link>https://blog.csdn.net/erone/article/details/79827201</link><guid>https://blog.csdn.net/erone/article/details/79827201</guid><author>erone</author><pubDate>Thu, 05 Apr 2018 16:35:35 +0800</pubDate><description><![CDATA[1.Jquery的Ajax不能实现文件下载。这个问题困扰了我半天。用了好几个方法，换contentType等header，用各种outputstream inputstream都无法形成文件，只能在请求里看到有文件的大小。下面是解答：JQuery的ajax函数的返回类型只有xml、text、json、html等类型，没有“流”类型，所以我们要实现ajax下载，不能够使用相应的ajax函数进行文件下...]]></description><category></category></item><item><title><![CDATA[用eclipse从1开始配置一个maven java项目]]></title><link>https://blog.csdn.net/erone/article/details/79608045</link><guid>https://blog.csdn.net/erone/article/details/79608045</guid><author>erone</author><pubDate>Mon, 19 Mar 2018 10:19:41 +0800</pubDate><description><![CDATA[1.项目名称2.写了很多个module，包括xxx-admin-webapp,xxx-controller,xxx-dao,xxx-domain,xxx-service,xxx-utils，其中webapp模块的packaging为war，其他的均为jar3.从前面的项目拷贝类到新项目上，首先是utils里的类。然后是service。这里遇到了一个问题，service无法直接引用utils里的类。...]]></description><category></category></item><item><title><![CDATA[Android OOM遇见的一些问题]]></title><link>https://blog.csdn.net/erone/article/details/75055361</link><guid>https://blog.csdn.net/erone/article/details/75055361</guid><author>erone</author><pubDate>Thu, 13 Jul 2017 14:34:49 +0800</pubDate><description><![CDATA[临近项目结尾，遇见过的OOM的问题与大家分享。
大概遇见的情况就是，打开所有页面再关闭，内存并不回收。
情况1：自定义的页面管理器没有remove掉已经结束的activity
我在应用中创建了一个页面管理器，里面有个list装载所有的activity，方便管理页面开关。
然而在finish的时候忘记remove finished activity，导致内存不断上涨。
情况2：Handle]]></description><category></category></item><item><title><![CDATA[Android Studio卡在refreshing gradle project的原因和快速解决办法]]></title><link>https://blog.csdn.net/erone/article/details/74393809</link><guid>https://blog.csdn.net/erone/article/details/74393809</guid><author>erone</author><pubDate>Wed, 05 Jul 2017 11:41:08 +0800</pubDate><description><![CDATA[gradle-wrapper.properties最后一行表示当前工程gradle的版本，如果Android Studio发现gradle的缓存目录里没有这个版本，这个时候就会触发refreshing gradle project，而一个gradle包的大小一般在70M以上，开了VPN需要半个小时以上才能缓存下来，不开的话基本会卡死在那里，下载不了。知道问题就好解决了，首先打开你的gradle缓存]]></description><category></category></item><item><title><![CDATA[Android Studio制作.9.png]]></title><link>https://blog.csdn.net/erone/article/details/54945650</link><guid>https://blog.csdn.net/erone/article/details/54945650</guid><author>erone</author><pubDate>Thu, 09 Feb 2017 11:53:31 +0800</pubDate><description><![CDATA[流程：
1.把png图片重命名为.9.png
2.复制图片到drawable里
3.在AS中打开图片，就可以出现编辑界面，此时可以上下左右拖动显示或放大的范围.
4.编辑后要在三个分辨率下都放置此图片，不然显示会有误。]]></description><category></category></item><item><title><![CDATA[关于自定义view的一些问题]]></title><link>https://blog.csdn.net/erone/article/details/54618714</link><guid>https://blog.csdn.net/erone/article/details/54618714</guid><author>erone</author><pubDate>Thu, 19 Jan 2017 19:01:46 +0800</pubDate><description><![CDATA[最近遇到了较为棘手的重写view的问题。首先是写构造方法。按照原生的写法是单参数构造方法调用自己的双参数构造方法，双参数构造方法调用自己的三个参数的构造方法，而不能使用像编译器推荐的那样只调用父类的构造方法。按照原生view的写法初始化只需在三个参数的构造方法中完成即可，而不用每个构造方法都写一遍。
关于属性的声明。我们可以在attrs.xml中定义一些我们需要的属性，用定义。如果集中起来可以形]]></description><category></category></item><item><title><![CDATA[Android中的SQLiteDatabase，ContentProvider和ContentResolver]]></title><link>https://blog.csdn.net/erone/article/details/54136469</link><guid>https://blog.csdn.net/erone/article/details/54136469</guid><author>erone</author><pubDate>Fri, 06 Jan 2017 12:07:41 +0800</pubDate><description><![CDATA[阔别蛮久，重回博客积累自己。

关于Transaction，查阅其他人的讲解说是这样的：默认是不用手动设置，当有大量数据操作时需要手动设置：
如xxxx操作为5000条数据处理SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//开启事务
db.beginTransaction();
try{
            //批量处理]]></description><category></category></item></channel></rss>