
Android
skyf1y
这个作者很懒,什么都没留下…
展开
-
android随笔-WebView之setDomStorageEnabled
今天在接入腾讯企点客服的时候,用anroid自带的webView加载客服页面,当退出页面后重新进入时之前的聊天记录都被清空了,而直接在浏览器中打开对应的页面时历史聊天记录能正常显示,那么猜测我们的webView可能阻止了h5页面给本地写数据,查看客服页面的的源码发现它用到了Local Storage,而webView默认是不开启DOM Storage的,需要手动调用setDomStorageEnabled(true)来开启,只有开启了DOM Storage api后页面才能正常缓存一些数据...原创 2021-04-06 16:04:51 · 7496 阅读 · 0 评论 -
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 · 334 阅读 · 0 评论 -
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 · 1385 阅读 · 0 评论 -
android性能优化随笔-查看APP启动时间
adb shell am start -W [packageName]/[activityclass]原创 2021-03-09 17:26:34 · 155 阅读 · 0 评论 -
Android内存泄露之 FinalizerReference
在用Android studio中的Profiler查看内存时常会发现类型为FinalizerReference的对象也有好几百甚至成千上万的,那么这个对象是什么鬼,怎么来的呢?下面我我们来仔细分析下当我们想在一个类对象释放时额外做一些工作是,就会重写这个类的finalize函数,当系统在创建类对象时发现这个类重写了finalize函数,就会额外创建一个FinalizerReference对象,并用这个FinalizerReference对象把我们自己的对象包装起来,添加到一个队列中 public原创 2021-03-06 09:13:47 · 1153 阅读 · 0 评论 -
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 · 214 阅读 · 0 评论 -
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 · 781 阅读 · 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 · 378 阅读 · 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 · 181 阅读 · 0 评论 -
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 · 333 阅读 · 0 评论 -
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 · 451 阅读 · 0 评论 -
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 · 389 阅读 · 0 评论 -
Android随笔-NestedScrolling
系统默认实现了NestedScrollingParent接口的类CoordinatorLayoutNestedScrollViewSwipeRefreshLayoutWearableDrawerLayout(该类没有实现NestedScrollingParent2和NestedScrollingParent3)系统默认实现了NestedScrollingChild接口的类BaseGridViewHorizontalGridViewNestedScrollViewRecyc原创 2021-01-08 09:08:29 · 175 阅读 · 0 评论 -
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 · 6395 阅读 · 0 评论 -
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 · 217 阅读 · 0 评论 -
andorid随笔-动画
android中动画分类:1、视图动画:平移(TranslateAnimation),缩放(ScaleAnimation),旋转(RotateAnimation),透明度(AlphaAnimation),额外还有一个layoutAnimater, 这些动画可以单独使用,也可以组合使用2、帧动画,比较简单,自行了解3、属性动画,里面涉及的主要类有ValueAnimator,ObjectAnimator,AnimatorSet,插值器TimeInterpolator,评估程序TypeE...原创 2020-12-29 11:58:43 · 101 阅读 · 0 评论 -
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 · 275 阅读 · 0 评论 -
android随笔-对象引用
1、类的非静态内部类会隐式持有外部类的引用2、匿名类的非静态实例会隐式持有外部类的引用3、静态内部类不会隐式持有外部类的引用4、匿名类的静态实例不会隐式持有外部类的引用原创 2020-12-24 11:20:43 · 138 阅读 · 0 评论