<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AndroidOliver的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AndroidOliver</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AndroidOliver]]></copyright><item><title><![CDATA[Nginx常用配置]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/124893080</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/124893080</guid><author>AndroidOliver</author><pubDate>Sat, 21 May 2022 00:46:18 +0800</pubDate><description><![CDATA[1.停止

sudo nginx -s stop

2.启动

nginx

3.重新加载

nginx -s reload


]]></description><category></category></item><item><title><![CDATA[多个jdk动态切换]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/124529908</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/124529908</guid><author>AndroidOliver</author><pubDate>Sun, 01 May 2022 17:50:36 +0800</pubDate><description><![CDATA[1.以jdk8、jdk11为例子

2.配置文件如下

export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
alias java8='export JAVA_HOME=$JAVA_8_HOME' #设置指令快速切换java，注意这里是单引号，否则不生效

export JAVA_11_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/H]]></description><category></category></item><item><title><![CDATA[Android Studio添加文件注释头模板]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/87919775</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/87919775</guid><author>AndroidOliver</author><pubDate>Tue, 19 Apr 2022 10:21:57 +0800</pubDate><description><![CDATA[1.打开 Androidstudio--&gt;File -&gt; Settings -&gt; Editor -&gt; File and Code Templates -&gt; 右侧File标签 -&gt;includes--File Header

2.配置模版


/**   
  * @CreateTime : ${DATE} ${TIME} 
  * @Author : ${USER}
  * @Description : ${DESCRIPTION}
 */


...]]></description><category></category></item><item><title><![CDATA[BUG1-Cannot obtain size for recycled Bitmap]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/118057093</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/118057093</guid><author>AndroidOliver</author><pubDate>Sat, 19 Jun 2021 18:06:42 +0800</pubDate><description><![CDATA[背景：

    拍照成功后，用glide将图片进行展示，之后点击保存按钮的时候会把图片上传到后端

复现步骤：

   dai
]]></description><category></category></item><item><title><![CDATA[AOP全埋点---Gradle插件的制作]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/116851107</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/116851107</guid><author>AndroidOliver</author><pubDate>Sat, 15 May 2021 15:06:21 +0800</pubDate><description><![CDATA[Gradle插件制作方法一共三种，分别为：在app的builde.gradle中制作、在buildSrc文件夹下制作、自定义module并上传到maven仓库。三种方法实现大致相似，均实现了Plugin&lt;Project&gt;接口。


]]></description><category></category></item><item><title><![CDATA[GIT如何回滚远程库代码]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/113402173</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/113402173</guid><author>AndroidOliver</author><pubDate>Fri, 29 Jan 2021 18:54:12 +0800</pubDate><description><![CDATA[工作中偶尔会遇到推错代码到远程库的问题，代码说下，push错代码之后，如何进行回滚：

1.获取提交日志

git reflog


(base) xxx@bogon xx % git reflog
c0ecadd (HEAD -&gt; dev, origin/dev) HEAD@{0}: commit: faet:误提交代码
7407fc4 (origin/featch, featch) HEAD@{1}: checkout: moving from master to dev
b981b4e (or.]]></description><category></category></item><item><title><![CDATA[android studio不显示当前手机app进程]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/113242942</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/113242942</guid><author>AndroidOliver</author><pubDate>Wed, 27 Jan 2021 10:53:46 +0800</pubDate><description><![CDATA[Can't assign requested address

java.net.BindException: Can't assign requested address

at sun.nio.ch.Net.bind0(Native Method)

at sun.nio.ch.Net.bind(Net.java:433)

at sun.nio.ch.Net.bind(Net.java:425)

at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSo.]]></description><category></category></item><item><title><![CDATA[LottieAnimationView怎么重置为第一帧]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/108453854</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/108453854</guid><author>AndroidOliver</author><pubDate>Mon, 07 Sep 2020 19:04:33 +0800</pubDate><description><![CDATA[最近使用Lottie动画，遇到一个需求：要求在动画还未执行完的时候，将动画取消，并且画面现实为第一帧，扒拉半天没找到reset方法，cancel这个方法只能将动画停止，不能重置到第一帧，后来想到个办法，入下
 view.cancelAnimation()//取消动画执行
  view.progress=0f`//将动画重置到第一帧
  ``



...]]></description><category></category></item><item><title><![CDATA[macOS上使用Openconnect代替Cisco Anyconnect]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/108453686</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/108453686</guid><author>AndroidOliver</author><pubDate>Mon, 07 Sep 2020 18:52:01 +0800</pubDate><description><![CDATA[今天Cisco Anyconnect莫名奇妙用不了，重新安装却提示安装器错误，本以为是因为虚拟机安装过了导致的，谁知道写在之后依然不行，于是乎我就放弃了，找到了Openconnect这个替代品，抱着试一试的态度，目前链接正常，在家也能访问公司电脑了，哈哈。

下面说下Openconnect安装方法：

命令行模式:


brew install openconnect


GUI模式:


brew cask install openconnect-gui


安装完之后, 发现GUI打不开, 提示来自不被]]></description><category></category></item><item><title><![CDATA[zsh: command not found:最快速的解决方法]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/108453324</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/108453324</guid><author>AndroidOliver</author><pubDate>Mon, 07 Sep 2020 18:21:15 +0800</pubDate><description><![CDATA[zsh: command not found:
按照网上千篇一律的修改文件后，依然无效，我放弃 ，决定手动切换。虽然方法笨，但是目前贼好使。
chsh -s /bin/bash	//切换到bash
chsh -s /bin/zsh	//切换到zsh
​如果输入密码后提示no change made，那么命令前加上sudo获取临时管理员权限



...]]></description><category></category></item><item><title><![CDATA[jsbridge原来这么简单]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/105907458</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/105907458</guid><author>AndroidOliver</author><pubDate>Sun, 03 May 2020 19:28:52 +0800</pubDate><description><![CDATA[在网上查了很久，终于弄明白是怎么回事了。下面是自己的一些总结，主要有两部分：原理和使用问题
不当之处，还请多多指正。
1.jsbridge原理
1.1 创建jsbridge桥
    主要包括三个方法：
    1.regersterhandler：h5调用此方法注册方法，之后native可以调到该方法，并讲方法保存在本地集合中
    2.callhandler：h5通过该方法调用native方...]]></description><category></category></item><item><title><![CDATA[static关键字]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/80559547</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/80559547</guid><author>AndroidOliver</author><pubDate>Sun, 03 Jun 2018 19:59:08 +0800</pubDate><description><![CDATA[1.static关键字的特点	* a:随着类的加载而加载	* b:优先于对象存在	* c:被类的所有对象共享	* d:可以通过类名调用		* 其实它本身也可以通过对象名调用。		* 推荐使用类名调用。		* 静态修饰的内容一般我们称其为：与类相关的，类成员2:static的注意事项	* a:在静态方法中是没有this关键字的		* 如何理解呢?			* 静态是随着类的加载而加载，this是随着对象...]]></description><category></category></item><item><title><![CDATA[安装包解析出现问题]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/78024950</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/78024950</guid><author>AndroidOliver</author><pubDate>Mon, 18 Sep 2017 23:03:51 +0800</pubDate><description><![CDATA[调用手机自带安装apk界面报出题目所描述的问题，最后发现是我把文件的下载地址设在错了。 /**
 * 调出apk安装页面
 * @param activity
 * @param target
 */
public static void install(Activity activity, String target) {
    Intent intent = new Intent();]]></description><category></category></item><item><title><![CDATA[Android studio 无线调试真机]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/75225707</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/75225707</guid><author>AndroidOliver</author><pubDate>Mon, 17 Jul 2017 13:27:40 +0800</pubDate><description><![CDATA[最近手机usb先不好使，动不动就和as断开，所有在网上找到通过wifi调试手机的方法，具体步骤如下（亲测可用）：
  1.手机通过USB线连接到电脑，cmd打开电脑命令窗口 
  2.设置adb端口号： adb tcpip 端口号（随便写个大点的比如：12345）  
  3.查看手机IP地址：adb shell ifconfig wlan0 
  4.连接手机: adb connect 手机ip：]]></description><category></category></item><item><title><![CDATA[通过HttpURLConnection获取网页信息]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/61641155</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/61641155</guid><author>AndroidOliver</author><pubDate>Sun, 12 Mar 2017 21:04:40 +0800</pubDate><description><![CDATA[*纯代码public class MainActivity extends Activity {    private TextView tv_content;
    private EditText et_path;    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCrea]]></description><category></category></item><item><title><![CDATA[Activity的生命周期和横竖屏切换的生命周期]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/59105799</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/59105799</guid><author>AndroidOliver</author><pubDate>Wed, 01 Mar 2017 14:29:53 +0800</pubDate><description><![CDATA[1.Activity的生命周期和横竖屏切换的生命周期1.1 生命周期    #1.创建Activity的时候执行的方法
    onCreate-->onStart-->onResume    #2.销毁Activity的时候执行的方法
    onPause-->onStop->onDestroy
1.2 A页面跳转到B页面，点击返回，这个过程中的生命周期
    #1.页面完全覆盖A页面的情况]]></description><category></category></item><item><title><![CDATA[Activity的生命周期和横竖屏切换的生命周期]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/59105176</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/59105176</guid><author>AndroidOliver</author><pubDate>Wed, 01 Mar 2017 14:25:03 +0800</pubDate><description><![CDATA[1.Activity的生命周期和横竖屏切换的生命周期1.1 生命周期    #1.创建Activity的时候执行的方法
    onCreate-->onStart-->onResume    #2.销毁Activity的时候执行的方法
    onPause-->onStop->onDestroy
1.2 A页面跳转到B页面，点击返回，这个过程中的生命周期
    #1.页面完全覆盖A页面的情况]]></description><category></category></item><item><title><![CDATA[通过Application配置全局的Context]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/56481828</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/56481828</guid><author>AndroidOliver</author><pubDate>Wed, 22 Feb 2017 11:30:24 +0800</pubDate><description><![CDATA[我本来配置了全局变量，但是使用SharedPreferences时总是报空指针异常,报错如下：]]></description><category></category></item><item><title><![CDATA[集合体系图]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/56334603</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/56334603</guid><author>AndroidOliver</author><pubDate>Tue, 21 Feb 2017 23:03:44 +0800</pubDate><description><![CDATA[A:List的三个子类的特点
    ArrayList:
        底层数据结构是数组，查询快，增删慢。
        线程不安全，效率高。
    Vector:
        底层数据结构是数组，查询快，增删慢。
        线程安全，效率低。
    Vector相对ArrayList查询慢(线程安全的)
    Vector相对LinkedList增删慢(数组结构)]]></description><category></category></item><item><title><![CDATA[Service]]></title><link>https://blog.youkuaiyun.com/AndroidOliver/article/details/56331514</link><guid>https://blog.youkuaiyun.com/AndroidOliver/article/details/56331514</guid><author>AndroidOliver</author><pubDate>Tue, 21 Feb 2017 22:50:29 +0800</pubDate><description><![CDATA[注：本博客为初稿，鉴于网上好多总结的不清楚，所以自己总结，方便查找。日后会进行相信整理。  1.进程的概念[1]Foreground process 前台进程  最不容易被杀死用户正在交互 相当于actvity执行了onResume方法当广播接收者的onReceiver方法执行 也属于前台进程  [2]Visible process  可视进程不会维持任何前台组件但是用户还可以一直看得见屏幕 相当于]]></description><category></category></item></channel></rss>