自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Android 桌面小部件AppWidget的使用

实现一个桌面小部件,里面一个按钮一个textview,点击按钮开启服务,5秒内每秒更新data,并发送广播更新textview的text1.先在AndroidManifest.xml中定义桌面小部件(类似广播的静态注册)<receiver android:name=".AppWidget" android:exported="false"> <intent-filter>

2022-04-22 11:21:46 4284

原创 Handler源码分析笔记

1.handler线程切换原理消息发送和消费两者之间是基于内存共享机制,共享一份消息队列。采用ThreadLocal对线程进行管理,保证 每个线程上的Looper是相互独立的。在发送消息的过程中由Message去持有发送者的实例(Handler),导致处理消息的时候是哪个线程上创建的Handler就在那个线程上处理消息。2.Looper为什么不会阻塞主线程?ActivityThread main方法是Android app的入口,Looper.loop()方法必须死循环挂起,它如果.

2022-03-02 15:37:56 200

原创 Binder的简单了解笔记

一、Binder是什么?Binder是Android 进程间通信机制之一(IPC)二、为什么一线企业开发的app要使用多线程?1.突破进程内存限制:因为虚拟机分配给各个进程的运行内存是有限制的,LMK(低内存杀死机制)也会优先回收对系统资源占用多的进程。2.功能稳定性:独立的通信进程保持长链接的稳定性。3.规避系统内存泄漏:独立的webview进程阻隔内存泄漏导致的问题。4.隔离风险:对于不稳定的功能放入单独的进程,避免导致主线程崩溃。三、查看某个手机一个进程分配的运行内

2022-03-01 11:17:14 2391

原创 Retrofit源码分析笔记

一.仅使用okhttp进行网络请求存在的四个问题。1.复杂的接口配置需要手动进行(body、请求头、参数)2.需要手动解析response body3.无法自动完成线程切换4.嵌套网络请求会陷入“回调陷阱”二.okhttp和retrofit分别的职责是什么?1.okhttp和retrofit都是square公司开发的,okhttp的设计初衷只是单一的进行网络请求,是基于http协议来的。2.retrofit是RESTful风格的http网络框架,retrofit进行网络请求的本质

2022-02-23 10:43:42 1776

原创 WorkManager的学习和使用要点笔记

1.在oppo Android 5.1手机上报错Invoke-customs are only supported starting with Android O解决办法:在app的build.gradle中添加android{ compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }}2.Wor

2022-02-21 10:12:54 1439

原创 代理模式的学习

代理模式分类1.静态代理模式2.动态代理模式静态代理模式1.委托对象与代理对象需要实现相同的接口2.代理对象的构造方法中传人委托对象实例动态代理模式(通过反射机制动态生成代理者的对象)一、动态代理类import java.lang.reflect.InvocationHandlerimport java.lang.reflect.Methodclass DynamicProxy(val any: Any) : InvocationHandler { over

2022-02-14 11:47:28 199

原创 webview遇到的问题

we are sorry but privacy-document-web-external doesn’t work properly without javaScrpit enabled,please enable it to continue意思是没有开启JavaScrpit,开启后就没问题了webView.settings.javaScriptEnabled = true//是否允许JavaScript脚本运行,默认为false...

2022-01-05 11:33:44 2380

原创 多线程协作

package com.example.myapplication.testimport java.lang.Thread.sleepimport kotlin.concurrent.threadfun main(args: Array<String>) { //定义一个object对象,用于实现线程阻塞和唤醒 val o= Object() thread { //线程阻塞直到下载图片完成 synchronized(o){ .

2021-12-22 15:03:08 1561

原创 使用webview Android和js进行通信

Android调用js的方法webView.evaluateJavascript("javascript:aaa(1)") { value -> Log.i("webView", value ?: "null") }aaa是js端定义的方法,1为传的参数,value是方法返回的值js调用Android的方法1.定义一个类,里面定义一个带 @JavascriptInterface注解的方法,直接return js可以接收到返回值// 继承自Object类cla

2021-12-21 11:25:13 2088

原创 新项目导入的时候遇到的问题

一、Unrecognized Android Studio (or Android Support plugin for IntelliJ IDEA) version '201.8743.12.41.6858069', please retry with version 2020.3.1 or newer.解决办法:修改gradle的版本号1.第一个修改的是如下的版本号:2.第二个修改的是如下的版本号二、Could not find method buildFeatures(..

2021-12-16 13:55:25 2262

原创 内存抖动相关

目录内存抖动的定义内存泄漏和内存抖动的影响避免内存抖动(避免在很频繁调用的方法中创建对象)内存抖动的定义内存频繁地分配和回收,它伴随着频繁的GC。内存泄漏和内存抖动的影响内存泄漏:可用内存越来越少 -> OOM内存抖动:1.卡顿(进行垃圾回收的时候,其他线程会被挂起,比如点击一个按钮,但是在进行gc操作,ui线程被挂起,无法响应点击事件)2.OOM(如果使用标记-清除算法的话,频繁的进行垃圾回收会导致内存碎片化,连在一起的内存不足以分配给新的对象的时候就会报

2021-12-13 11:05:07 1403

原创 切到后台再切回app,退出登录直接退到桌面而不是登录页

原因:我退出登录是先销毁所有的activity,再启动登录页activity,切到后台再切回app销毁所有activity的时候task也被销毁了(猜测没有切到后台的情况是没有销毁task的)解决办法:不再循环销毁所有activity,而是在启动登录页activity的时候添加下面的flag,要有Intent.FLAG_ACTIVITY_NEW_TASK才会生效 ARouter.getInstance() .build("/app/LoginActivit

2021-12-07 17:59:04 625

原创 RecyclerView滑动到指定位置position

//查看recyclerview的smoothScrollToPosition源码可知道在调用smoothScrollToPosition之前需要先设置LayoutManage recyclerView.layoutManager = LinearLayoutManager(this) //需要添加延迟才有滑动效果 LoyoUIThread.runAfterDelay({ rec...

2021-11-29 14:16:13 2106

原创 解决PopupWindow弹出之后点击外部的触发显示弹框区域,弹框会先取消显示再弹出

为Popwindow添加触摸回调 //设置触摸拦截事件,如果返回true表示拦截,不继续往下传递 showHelpTextPopWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //

2021-11-25 14:01:22 754

原创 github使用中遇到的问题

目录push代码的时候报:remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.向github push数据,出现错误Failed to connect to github.com port 443: Operation timed outpush代码的时候报:remote: Support for passwor

2021-11-25 10:25:01 2007

原创 Webview相关

//是否可以退回浏览器历史记录if (webView.canGoBack()) { //回退浏览器上一记录 webView.goBack()} else { //关闭当前activity finish()}

2021-11-18 10:28:56 894

原创 android studio4.0 通过run打包,发给测试发现有些手机启动时就闪退,报Didn‘t find class on path: DexPathList

使用build APK重新打包测试发现这种打包方式就不会出现闪退问题

2021-07-27 11:47:44 178

原创 AppBarLayout和CollapsingToolbarLayout的头布局自动收起

想要的效果:点击按钮之前:点击按钮之后:答:使用setExpanded设置是否展开appBarLayout.setExpanded(false)

2021-05-11 16:11:13 561

原创 popwindow中有EditText,弹出软件盘和软件盘弹出后界面的兼容问题

遇到的问题软件盘无法弹出答:设置popwindow的isFocusable为true,popwindow应获取焦点。但是设置为true之后点击其他可以弹出popwindow的按钮,不会直接弹出其他popwindow,而是先取消显示当前popwindow,再次点击才会显示其他popwindow。filterPopWindow.isFocusable = true软件盘弹出后,有的手机popwindow上移,有些手机popwindow位置高度不变,内容也不上移,导致popwindow部分内容被挡

2021-05-11 15:50:44 287

原创 3层viewpager嵌套问题

1.第一层viewpager不能预加载(自定义viewpager修改其DEFAULT_OFFSCREEN_PAGES=0)2.tablayout和viewpager关联之后,tag和fragment没有对应上,tag感觉变多了。(子viewpager的adapter需要使用fragment.childFragmentManager)3.解决嵌套viewpager的滑动冲突问题。4.子viewpager滑到第一页或是最后一页继续滑动,要做成不能滑动,而不是出发父viewpager的滑动。...

2021-05-11 13:56:25 475 1

原创 app debug版正常运行,release版点开app就闪退

查看libs里面:发现arm64-v8a没有在app的build.gradle中定义解决办法:在app的build.gradle中的defaultConfig中加上arm64-v8a ndk { abiFilters "armeabi","armeabi-v7a", "x86","x86_64","arm64-v8a" }知识点:Android 设备的CPU类型(通常称为”ABIs”)armeabiv-v7a: 第7代及以上的 ARM 处理

2021-03-17 20:36:41 911

原创 xrecyclerview的loadmore的加载样式修改

查看了xrecyclerview的源码,loadmore的加载样式是LoadingMoreFooter实现的。LoadingMoreFooter中没有给出修改的方法。那么只有将recyclerview项目导为module,修改其源码。导入module到项目指定文件夹中:1.在项目的根目录下创建文件夹(例如:third)2.正常导入module,路径为根目录下3.在文件管理中将导入的module的文件夹拖到third文件夹下4.修改项目的setting.gradlesetting.gradle例

2021-02-03 17:38:20 356

原创 为知乎图片选择器Matisse适配Android11的分区存储

知乎的Matisse没有适配Android 10和Android 11。Android 10和Android 11启用了分区存储,Android10 在AndroidManifest.xml的Android标签内设置android:requestLegacyExternalStorage="true"后才可以访问沙盒路径下的文件。Android 11已经强制启用分区存储啦,所以需要进行适配。Android10不在AndroidManifest.xml的Android标签内设置android:reques

2021-01-14 16:40:48 1924 2

原创 限制TextView文本最多5行,多余5行显示展开收起按钮

定义TextView的时候设置最大行数: <TextView android:id="@+id/tvChangeBefore“ android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="5" />设置完.

2021-01-13 11:37:45 828

原创 TextView为<strong>标签之间的文本设置颜色

将<strong>标签替换成<font><font color=“value”>值描述color_name规定颜色值为颜色名称的文本颜色(比如 “red” )hex_number规定颜色值为十六进制值的文本颜色(比如 “#ff0000”,这里不能包含透明度,否则不会有颜色)rgb_number规定颜色值为 rgb 代码的文本颜色(比如 “rgb(255,0,0)”)tvChangeBefore.text=Html.fromH

2021-01-13 11:12:32 1400

原创 实现美团首页滑动效果

<?xml version="1.0" encoding="utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent".

2020-12-28 16:31:15 1222

原创 .9图遇到的问题

ui设计师提供的切图如上图所示,我需要用它来实现选项选中的效果,下面是我遇到的问题:1.我制作的.9图,各边不一样粗。原因:因为我没有设置好拉升的区域,边包含在拉升区域中,拉升了就变细了。2.ui设计师提供的切图只有边框,没有里面的背景,导致TextView设置的值没有显示。3.貌似.9图只能拉升不能缩小。...

2020-12-24 17:52:49 432 1

空空如也

空空如也

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

TA关注的人

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