自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 Windows 挂载nfs

1、安装NFS服务和客户端1.1 启用或关闭Windows功能勾选这3项,确定安装后重启电脑2、修改注册表打开注册表找到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,给其中增加两项:AnonymousUid,AnonymousGid;...

2022-02-21 11:54:19 2842

原创 android随笔-WebView之setDomStorageEnabled

今天在接入腾讯企点客服的时候,用anroid自带的webView加载客服页面,当退出页面后重新进入时之前的聊天记录都被清空了,而直接在浏览器中打开对应的页面时历史聊天记录能正常显示,那么猜测我们的webView可能阻止了h5页面给本地写数据,查看客服页面的的源码发现它用到了Local Storage,而webView默认是不开启DOM Storage的,需要手动调用setDomStorageEnabled(true)来开启,只有开启了DOM Storage api后页面才能正常缓存一些数据...

2021-04-06 16:04:51 6830

原创 Java String类的equals

之前一直以为String的equals是直接对hashCode做比较的,后面偶尔看了一下String的实现代码才发现public boolean equals(Object var1) { if (this == var1) { return true; } else { if (var1 instanceof String) { String var2 = (String)var1;

2021-03-24 11:39:26 287

原创 Java内部类调用外部类对象的方法和成员函数过程

Java中内部类是如何调用外部类的成员变量和方法的?我们下看看下面的例子package com.iworktool.libjava;public class Outer{ private String privateValue = "privateValue"; public String publicValue = "publicValue"; private class Inner{ public Inner() {}

2021-03-24 11:09:36 3212 3

原创 Android DownloadManager 添加任务后一直处于暂停状态(STATUS_PAUSE)

最近在用DownloadManager下载APK做软件升级更新时遇到一个问题,自己的测试手机上一切正常,用同事的手机测试时,下载任务能正常创建,但是创建后任务一直处于暂停状态,我的测试手机是android 10,另一个测试手机是android 8,出问题的手机是android 9,怀疑是android版本问题,后又换了一个android9的手机测试一切正常,后来猛然想起我的下载地址是http,随将http改为https后,问题得以解决。原因分析:同事的手机是诺基亚,用的android原生系统,andro

2021-03-19 15:12:59 1169

原创 android性能优化随笔-查看APP启动时间

adb shell am start -W [packageName]/[activityclass]

2021-03-09 17:26:34 118

原创 C++ 类构造、析构函数调用顺序

1、子类和父类 构造、析构函数顺序class BaseClass{public: BaseClass(); ~BaseClass();private:};BaseClass::BaseClass(){ cout << "基类构造函数" << endl;}BaseClass::~BaseClass(){ cout << "基类析构函数" << endl;}class SubClass: public BaseClass

2021-03-06 10:53:17 866

原创 Android内存泄露之 FinalizerReference

在用Android studio中的Profiler查看内存时常会发现类型为FinalizerReference的对象也有好几百甚至成千上万的,那么这个对象是什么鬼,怎么来的呢?下面我我们来仔细分析下当我们想在一个类对象释放时额外做一些工作是,就会重写这个类的finalize函数,当系统在创建类对象时发现这个类重写了finalize函数,就会额外创建一个FinalizerReference对象,并用这个FinalizerReference对象把我们自己的对象包装起来,添加到一个队列中 public

2021-03-06 09:13:47 1034

原创 startActivity函数分析-(基于10.0.0)未完待续

Activity类有2个startActivity 函数的重载形式 public void startActivity(Intent intent) { this.startActivity(intent, null); } public void startActivity(Intent intent, @Nullable Bundle options) { if (options != null) { startAct

2021-03-05 18:01:55 172

原创 Android Resource.getLayout函数分析-(基于10.0.0)

在分析LayoutInflater的时候有一处是需要根据资源ID生成一个XmlResourceParser对象的,这个是通过调用Resource类的getLayout函数实现的,该函数的代码如下/frameworks/base/core/java/android/content/res/Resources.java public XmlResourceParser getLayout(@LayoutRes int id) throws NotFoundException {

2021-03-04 16:22:35 646 1

原创 LayoutInflater.inflate函数流程分析(基于10.0.0)

LayoutInflater中inflate函数总共有4个形态View inflate(@LayoutRes int resource, @Nullable ViewGroup root)View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) View inflate(XmlPullParser parser, @Nullable ViewGroup root)View inf.

2021-03-03 18:21:46 295 2

原创 setContentView源码分析-(基于9.0.0)

现在我们在开发的时候,Activity基本上都是继承自AppCompatActivity,那么调用setContentView时调用的是AppCompatActivity类的,下来我们看下AppCompatActivity类中的实现/frameworks/support/v7/appcompat/src/main/java/androidx/appcompat/app/AppCompatActivity.java @Override public void setContentVie

2021-03-03 12:02:21 148

原创 Android 系统启动流程分析(基于9.0.0源码)

1、启动电源:当电源键按下是引导芯片从预定义地方开始执行,加载引导程序BootLoader到RAM中,然后执行;2、引导程序BootLoader拉起Linux;3、Linux内核启动完成后会在系统文件中寻找init.rc文件(init.rc文件是一个非常重要的配置文件,它由AIL语言(Android Init Language)编写),并启动init进程4、init进程的入口函数main所在文件为system/core/init/init.cppint main(int argc,char

2021-03-02 16:01:18 284

原创 android随笔-线程顺序执行

创建几个线程,让线程按顺序执行某些操作方法一,使用对象的Wait和NotifyAll来实现 private static class PrintService{ private volatile int step = 1; synchronized void printA() { waitForStep(1); Log.i("printService", "AAA");

2021-01-13 14:56:55 404

原创 RecyclerView Item 按下变色效果不起作用

在项目用用到RecyclerView,自定Item的Layout后在根布局添加android:background="@drawable/setting_item_bkg_selector"并通过listview.addOnItemTouchListener来处理点击事件,发现Item的按下效果出不来解决办法:在Item的Layout根布局添加即可android:clickable="true"...

2021-01-12 10:36:04 327

原创 Android随笔-NestedScrolling

系统默认实现了NestedScrollingParent接口的类CoordinatorLayoutNestedScrollViewSwipeRefreshLayoutWearableDrawerLayout(该类没有实现NestedScrollingParent2和NestedScrollingParent3)系统默认实现了NestedScrollingChild接口的类BaseGridViewHorizontalGridViewNestedScrollViewRecyc

2021-01-08 09:08:29 128

原创 android WebView无法加载http页面

android 9.0之后 Google默认不知道http请求,用webview加载http页面时会显示 net:ERR_CLEARTEXT_NOT_PERMITTED解决方法1:只加载https的页面解决方法2:targetSdkVersion 改成27或者以下。解决方法3:在Manifest.xml的application中加 android:usesCleartextTraffic=[“true”]...

2021-01-07 18:42:03 5742

原创 RecyclerView Item点击事件封装

RecyclerView中没有提供OnItemClick这样的事件,自己封装了一个abstract public class RecyclerViewOnItemClickListener extends RecyclerView.SimpleOnItemTouchListener{ abstract protected void onItemClick(View view, int position); abstract protected void onItemLongClick(

2021-01-07 13:27:50 176

原创 Java随笔-equals和hashcode

Java的Object类默认实现了equals和hashcode,equals用来判断两个对象是否相等,hashcode用来返回对象的哈希值,equals默认实现中是通过判断两个对象的地址是否相同来确定对象是否相等,hashcode直接返回对象的地址,如果子类重写了equals,比较对象值是否相等,那么必须同时重写hashcode,不然可能是出现两个对象通过equals判断为相等,但是这两个对象通过hashcode(默认实现会返回对象地址)获取的哈希值不一样,违背了相关的规定(相等(相同)的对象必须具有相等

2021-01-06 09:57:15 96

原创 andorid随笔-动画

android中动画分类:1、视图动画:平移(TranslateAnimation),缩放(ScaleAnimation),旋转(RotateAnimation),透明度(AlphaAnimation),额外还有一个layoutAnimater, 这些动画可以单独使用,也可以组合使用2、帧动画,比较简单,自行了解3、属性动画,里面涉及的主要类有ValueAnimator,ObjectAnimator,AnimatorSet,插值器TimeInterpolator,评估程序TypeE...

2020-12-29 11:58:43 74

原创 android随笔-Fragment的View生命周期比Fragment的生命周期短的情况

Fragment的View生命周期可能会比Fragment的生命周期短比如replace的同时addToBackStack,那么之前的Fragment会DestroyView,View的生命周期结束,但是Fragment对象依然存在因此在Fragment中使用ViewMode和LiveData时,observe传入的是getViewLifecycleOwner(),而不是getLifecycle();...

2020-12-24 11:27:37 240

原创 android随笔-对象引用

1、类的非静态内部类会隐式持有外部类的引用2、匿名类的非静态实例会隐式持有外部类的引用3、静态内部类不会隐式持有外部类的引用4、匿名类的静态实例不会隐式持有外部类的引用

2020-12-24 11:20:43 115

原创 Windows 生产者-消费者

头文件class CProductAndConsumer{public: CProductAndConsumer(); ~CProductAndConsumer(); int Init();private: int Produce(int nThreadIndex); int Consume(int nThreadIndex); static DWORD WINAPI ProduceProc(__in LPVOID lpParameter)...

2020-12-22 14:17:36 360

原创 MAC 下安装Brew

命令行工具下执行/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

2020-12-12 09:53:14 67

原创 Android MediaCodec将PCM编码成ACC后传给FFMEPG注意事项

1.FFMEPG 流程AVCodec *codec = avcodec_find_decoder(AV_CODEC_ID_AAC);mCodecCtx = avcodec_alloc_context3(codec);avcodec_open2(mCodecCtx, codec, NULL)不需要主动给mCodecCtx设置任何参数,解码的是时候会根据ADTS里面的参数自己填充的2. MediaCodec编码后 的Config数据不要传给FFMPEG(一般时编码后的第一个buffer,可以通过

2020-11-30 14:16:53 223

原创 PCM转WAV-Android

public class WavHeader { /** * RIFF数据块 */ final String riffChunkId = "RIFF"; int riffChunkSize; final String riffType = "WAVE"; /** * FORMAT 数据块 */ final String formatChunkId = "fmt "; final int formatChunk.

2020-11-28 10:02:40 288

原创 AAC裸流添加ADTA头- Java版

/* 获取ACC的ADTS头* @param profile: 0:Main profile 1:AAC LC 2:SSR 3 reserved* @param freqIdx: 0:96000 HZ 1:88200 HZ 2:64000HZ 3:48000HZ 4:44100HZ 5:32000HZ 6:24000HZ 7:22050HZ 8:16000HZ 9:12000HZ* @param chanCfg: 0:Defined in AOT Specifc Config 1: 1 c.

2020-11-28 09:56:54 331

原创 Virtual Studio2017下编译Openssl静态库

1,去openssl官网:https://www.openssl.org 下载最新版源码2,安装Perl(编译过程中会用到它)官网:http://strawberryperl.com/,安装完成把类似C:\Strawberry\perl\bin这个的路径加入到环境变量PATH中3,安装NASM(编译过程中会用到它)官网:https://www.nasm.us,安装完成把类似D:\Program Files\nasm-2.15.03这样的路径加入到环境变量PATH中4,以管理员权限运行“VS201

2020-07-28 12:04:47 264

原创 Android-简单的轮播图控件BannerView

一个简单android轮播图控件,引入非常简单,只要给工程增加一个类即可

2017-09-14 16:12:33 865

ffmpeg 4.3.1 Windows 32位以及64位SDK

目前ffmpeg官方只提供64位版本的编译好的开发包,而没有32位的,目前还有不少机器是32位的,在开发过程中32位版本的是必不可少的,本资源包含的ffmpeg 4.3.1 Windows 32位以及64位SDK

2020-12-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除