总结
冯旭_Android
这个作者很懒,什么都没留下…
展开
-
Android 界面置灰
1.Activity中:在Activity的OnCreate方法中设置。setViewGray(dialog的View);2.Dailog:直接调用。原创 2022-12-02 09:05:40 · 890 阅读 · 1 评论 -
解决Android Studio 不自动提示问题
解决Android Studio 不自动提示问题第一种 :一般是由于Android ButterKnife Zelezny插件导致的,在Settings=>Plugins里卸载掉后File---restart IDE 解决!原创 2022-10-31 13:20:36 · 4510 阅读 · 1 评论 -
Java Runtime (class file version 55.0), this version of the Java Runt
打开老项目报 Java Runtime (class file version 55.0), this version of the Java Runt。的jdk版本不一致;需要在Setting-Gradle-对JDK版本进行更改为一致版本即可。安装了最新的稳定版Android Studio 海豚。原创 2022-10-24 10:38:05 · 7276 阅读 · 1 评论 -
医院各领域榜单。22个科室、100种常见疾病
01 肾脏病主要疾病:尿毒症、慢性肾功能衰竭、肾炎、肾病综合征、多囊肾病、肾结石1、北京大学第一医院2、南京军区南京总医院3、上海瑞金医院4、中山大学附属第一医院5、解放军总医院6、复旦大学附属华山医院7、北京协和医院8、南方医科大学南方医院9、第二军医大学长征医院10、四川大学华西医院 02 泌尿外科主要疾病:尿路结石、肾上腺疾病、肾移植、前列腺疾病、性功能障碍等1、北京大学第一医院2、武汉同济医院3、上海长海医院4、解放军总医院5、四川大学华西医院6、北京协和医院7、天津医科大学第二医院8、中山大原创 2022-07-27 13:56:56 · 1652 阅读 · 0 评论 -
为什么要使用MVP架构
相对于MVC,把原来的UI逻辑抽象成View接口,原来的业务逻辑就抽象为Presenter接口,原来的Model还是原来的Model。思考newPresenter(this)时候将activity/fragment实例将给引用方会有内存泄漏的风险。并不是的,Jectpack是2018年google-IO出的,是一个为了开发App一整套的解决方案。在deatchView方法,将持有的View层实例释放--view=null;View层通过“View接口”来处理原来的“UI逻辑”;.........原创 2022-07-20 15:30:06 · 1311 阅读 · 2 评论 -
Android知识图谱
Android知识图谱原创 2022-07-12 14:04:42 · 719 阅读 · 1 评论 -
栈 队列-通俗版
特性:栈:先进后出队列:先进先出栈:只能在表的一端进行 插入 和删除操作 的线性表队列:只能在表的一端进行插入 在另一端进行删除操作 的线性表原创 2022-02-10 17:18:35 · 207 阅读 · 1 评论 -
Activity View Window三者之间的关系-通俗版
activity就像是一个控制器view就是视图window就是一个窗户 用来显示view的承载模型activity在加载的时候 会初始化一个window :phoneWindowphoneWindow包含了一个根视图 RootViewRootView是通过“add”不断把子View添加进根视图里的 比如:textview iamgeView等等子View视图的监听又是交给了 WindowManageService去完成的, 将结果(事件)回调返回给Activity比如:onClickLi..原创 2022-02-10 17:14:11 · 481 阅读 · 1 评论 -
Instrumentation的含义和ActivityThread的关系
每个Activity都持有Instrumentation对象的一个引用,但是整个进程只会存在一个Instrumentation对象 。当startActivityForResult()调用之后,实际上还是调用了mInstrumentation.execStartActivity()startActivityForResult()------> minstrumentation.execStartActivity()方法。public void startActivityForResult(I原创 2021-12-23 16:38:38 · 1212 阅读 · 1 评论 -
Launcher的含义、如何启动的详解
当我们手指触摸屏幕上指定App图标Logo的时候,App就由Launcher开始启动了。Launcher到底是一个概念呢?Launcher本质上也是一个应用程序,和我们的App一样,也是继承自Activitypackages/apps/Launcher2/src/com/android/launcher2/Launcher.javapublic final class Launcher extends Activity implements View.OnClickLis.原创 2021-12-23 16:18:14 · 11219 阅读 · 1 评论 -
服务进程 APP进程间通信
明白了Android Framework的客户端服务器架构之后,那么我们的App进程本身和AMS(SystemServer进程)还有zygote进程 这三个独立的进程,他们之间如何通信呢? AMS:服务端对象,负责系统中所有Activity的生命周期zygote是一个进程 liunx加载的时候 fork出的一个系统进程1.App进程和与AMS通过Binder进行IPC通信,2.AMS(SystemServer进程)与zygote通过Socket进行IPC通信。AMS:Activit...原创 2021-12-23 15:56:11 · 1061 阅读 · 1 评论 -
Android系统里面的服务器和客户端的概念解析
服务器、客户端的概念不仅仅存在于Web开发中,在Android的框架设计中使用的也是这一种模式。服务器端指的就是所有App共用的系统服务,比如我们这里提到的ActivityManagerService,和前面提到的PackageManagerService、WindowManagerService等等,这些基础的系统服务是被所有的App公用的,当某个App想实现某个操作的时候,要告诉这些系统服务,比如你想打开一个App,那么我们知道了包名和MainActivity类名之后就可以打开打开App:知道Ap原创 2021-12-23 15:50:33 · 2954 阅读 · 1 评论 -
ActivityManagerService的含义和作用 初始化流程解析
ActivityManagerService,简称AMS,服务端对象,负责系统中所有Activity的生命周期ActivityManagerService进行初始化的时机,就是在SystemServer进程开启的时候,就会初始化ActivityManagerService。从下面的代码中可以看到顺序为:startSystemserver--> 初始化 AncitityManagerServicepublic final class SystemServer { //zygote.原创 2021-12-23 15:46:10 · 1474 阅读 · 0 评论 -
SystemServer的含义和作用
1.SystemServer是一个进程,并且是由zygote进程fork出来的 [zygote进程]2.Android Framework里面两大非常重要的进程: 1.SystemServer进程 2.zygote进程3.SystemServer比较重要的原因为: 1.系统级的重要服务都是在这个进程里开启的 比如: ActivityManageService、 PackgeManageService、WindowManageService等...原创 2021-12-23 15:34:04 · 2638 阅读 · 0 评论 -
zygote的含义和作用解析
zygote英[ˈzaɪɡəʊt]美[ˈzaɪɡoʊt]n. 受精卵;接合子[ 复数 zygotes ]1.当你的程序发生Crash的时候,打印的Error log下面通常携带有这一个单词显示出来2.Android是基于Linux系统的,在Linux系统中,所有进程都是由init进程直接或间接fork出来的,zygote进程也是一样。3.在Android中,zygote是一个进程名字。因为Android是基于Linux系统的,当你的手机开机的时候,Linux内核加载完之后 会...原创 2021-12-23 15:07:48 · 2380 阅读 · 0 评论 -
Activity启动过程梳理
ActivityManagerServices,简称AMS,服务端对象,负责系统中所有Activity的生命周期 ActivityThread,App的真正入口。当开启App之后,会调用main()开始运行,开启消息循环队列,这就是传说中的UI线程或者叫主线程。与ActivityManagerServices配合,一起完成Activity的管理工作 ApplicationThread,用来实现ActivityManagerService与ActivityThread之间的交互。在ActivityM...原创 2021-12-23 14:58:03 · 108 阅读 · 0 评论 -
android.view.WindowManager$BadTokenException
该异常表示不能添加窗口,通常是所要依附的view已经不存在导致的。[解决方案]:Dialog&AlertDialog,WindowManager不能正确使用时,经常会报出该异常,原因比较多,几个常见的场景如下:1.上一个页面没有destroy的时候,之前的Activity已经接收到了广播。如果此时之前的Activity进行UI层面的操作处理,就会造成crash。UI层面的刷新,一定要注意时机,建议使用set_result来代替广播的形式进行刷新操作,避免使用广播的方式,代码不直观且容易出错。.原创 2021-12-22 16:09:34 · 757 阅读 · 0 评论 -
java.lang.UnsatisfiedLinkError libc: Access denied finding property “itouch.predict_opt“
记录:在做一个旧项目迁移AndroidX的过程中,运行特定模块(腾讯云人脸核身)报libc: Access denied finding property "itouch.predict_opt" 异常出现此类异常的原因是 引用到的三方依赖/jar.aar包等 没有兼容AndroidX版本需要集成相应库的androidX版本即可...原创 2021-12-22 15:56:30 · 1192 阅读 · 0 评论 -
Kotlin java.lang.IllegalStateException: must not be null
在Fragment中一直报错说不能为空。然后进行Google:得出结论,通常我们把initView方法写在onCreateView方法中,但是这个时候view可能并没有返回,所以就找不到,所以我们要把初始化操作放在onActivityCreated或onViewCreated中只要把View视图赋值 或者控件放到 onViewCreated 中初始化即可:override fun onActivityCreated(savedInstanceState: Bundle...原创 2021-12-21 14:07:01 · 1572 阅读 · 0 评论 -
Kotlin 概述【官方】
支持多平台编程是 Kotlin 的主要优势之一。它减少了为不同平台编写和维护相同代码所花费的时间,同时保留了本机编程的灵活性和优势。这就是 Kotlin Multiplatform 的工作原理。 Common Kotlin包括语言、核心库和基本工具。用普通 Kotlin 编写的代码适用于所有平台。 借助 Kotlin 多平台库,您可以在通用和特定于平台的代码中重用多平台逻辑。公共代码可以依赖于一组涵盖日常任务的库,例如HTTP、序列化和管理协程。 要与平台互操作,请使用特定原创 2021-11-23 14:00:50 · 7809 阅读 · 0 评论 -
android:requestLegacyExternalStorage解析
在Android使用fuse文件系统开始,Android针对外置存储支持了独立的沙箱存储空间, 一般通过Context.getExternalFilesDir() Api获取,该空间内的数据为应用独有,并且不需要申请任何权限即可使用。但是当时并没有限制应用读写非沙箱内的数据。但是从Android Q开始,出于数据隐私问题,Android 希望禁止应用程序操作非沙箱内的数据。 但是为了过度,Android提供了requestLegacyExternalStorage机制,来帮助应用使用原来的机制继续读写存储卡转载 2021-11-12 13:16:56 · 11671 阅读 · 2 评论 -
java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #2)
在用Retrofit进行网络请求的报错:java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #2)意思是:第二个参数没有写具体的方式类型如:忘记@Field@Body检查一下 添加上就好了...原创 2021-10-26 16:30:30 · 1939 阅读 · 0 评论 -
什么是安卓的组件化原理?
优势:一是结构清晰,各个模块的代码实现分离,不会搅在一起。在代码review或者二次开发的时候一目了然,不会满世界去找代码。二是协同开发的时候更灵活,不用再等同组其他同事的模块开发完成后才能运行app,自己负责的模块稍加修改就可以当做主app直接跑起来。三是便于维护。每个模块的代码、布局文件、资源文件可以随时从项目中通过gradle配置去除掉。传统的项目架构中,往往如图所示:这样的项目结构不是很好,因为某个重要模块删除或修改时,会影响到其他模块的使用甚至引起连锁错误,耦合度很高。组件化的出现解原创 2021-10-24 21:01:29 · 245 阅读 · 0 评论 -
Android 2021隐私设置最佳做法
Android 致力于帮助用户充分利用最新的创新技术,同时始终将用户的安全和隐私视为第一要务。注意权限确保公开透明并让用户自主控制应用的使用体验,从而赢得用户信任。 根据实现应用功能的具体需要,请求授予最基本的权限。每当对应用进行重大更改时都应审核请求的权限,确认应用的功能仍然需要这些权限。 请注意,较高版本的 Android 通常会以注重隐私保护的方式引入无需权限即可访问数据的方法。 仅在需要时(而不是在应用启动时)请求权限,以便用户清楚地了解您的应用需要的权限。 如果您的应用是原创 2021-10-24 20:54:40 · 2638 阅读 · 0 评论 -
Android如何将应用迁移到 Android 12
本文对典型的开发和测试阶段进行了简要介绍,以帮助您制定与平台发布时间表保持一致的准备计划,并确保您的用户在 Android 12 上获得良好的体验。每次发布新的 Android 版本时,我们都会推出一些全新的功能并引入一些行为变更,目的就在于提高 Android 的实用性、安全性和性能。在许多情况下,您的应用都可以直接使用并完全按预期运行;而在其他的一些情况下,您可能需要对应用进行更新以适应这些平台变更。源代码发布到 AOSP(Android 开源平台)后,用户随之就可能开始使用新平台。因此,应用必原创 2021-10-24 20:51:16 · 1255 阅读 · 0 评论 -
Android Activity页面是否加载完成
private boolean isFirst = true; //永远判断是否第一次显示,否则每次锁屏后重新解锁都会调用@Overridepublic void onWindowFocusChanged(boolean hasFocus) {// TODO Auto-generated method stubsuper.onWindowFocusChanged(hasFocus);if (hasFocus && isFirst) {isFirst = false..原创 2021-10-24 20:47:27 · 932 阅读 · 0 评论 -
android 软键盘遮挡弹框解决方案
最近遇到了 Popwindow弹框 输入框软件盘 遮挡了弹框问题,解决如下://设置弹出窗体需要软键盘 bottomWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);//设置模式,和Activity的一样,覆盖,调整大小。 bottomWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); .原创 2021-09-29 14:42:11 · 1385 阅读 · 1 评论 -
executing service com.xx.xxxx.xxxxxx/.jpush.JpushServer
最近targetSdkVersion 升级为28后出现Android ANR:executing service com.xxx.yyy/cn.jpush.android.service.PushService需要将极光推送的jar文件替换成最新版 / 极光版本库升级到最高原创 2021-08-17 11:03:51 · 14150 阅读 · 0 评论 -
missing essential plugin: org.jetbrains.android please reinstall android studio from scratch.
出现此问题的原因是:在AS plugin 移除了必须的插件 如 KotlinMac 解决方案:找到对应目录的disabled_plugins.txt文件 移除掉步骤:1.访达-->前往 -->前往文件夹2.搜索 ~/Library/Application Support/Google找到对应的 在你所引用的版本里找到删除了 重新打开Android Studio 就可以正常进入了...原创 2021-08-02 13:24:16 · 1903 阅读 · 2 评论 -
Error: Please select Android SDK
Error: Please select Android SDK异常原因:是因为Android Sdk出现问题解决方案:去除勾选☑️搞定原创 2021-08-02 13:13:00 · 10915 阅读 · 7 评论 -
360加固保 mac无法正常使用 解决方案 macOS 11以上版本有效
Mac 无法打开“idevice_id”,因为无法验证开发者 的 解决方法Mac flutter 弹出提示 无法打开“idevice_id”,因为无法验证开发者 的 解决方法1、先执行 sudo spctl --master-disable此步骤也通常用来解决 mac打开软件时提示软件已损坏或无法验证 的错误2、再执行以下命令,【flutter解压后的目录】 需要替换成 你自己的对应目录sudo xattr -r -d com.apple.quarantine /Users/你的用.原创 2021-05-19 17:56:50 · 1570 阅读 · 3 评论 -
android:screenOrientation属性
在android的应用开发时,有时就需要限制整个项目或者部分功能界面的横竖屏切换。只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制就可以了android:screenOrientation="landscape"//限制此页面横屏显示android:screenOrientation="portrait"//限制此页面数竖屏显示android:screenOrientation属性:用来指定该活动界面的方向,可...原创 2021-04-09 13:29:38 · 2023 阅读 · 3 评论 -
CTO笔记
笔记三大板块:技术 业务 管理1.技术管理 不 等同于 管理技术要服务于业务2.不超过百分之1公司是技术驱动型 其他都是业务驱动型。 为技术买单大厂也是 腾讯 阿里 百度 滴滴 美团等等 3.程序员又喜欢技术驱动型的公司4.技术:架构业务:管理:CTO从广度提升公司价值; 程序员从技术提升价值5.程序员不能安于现状6.程序员并不缺,缺的是高级技术管理 单位需求量也不太多 优秀人才少7.不要每天闷着开发功能 要提升能力8.未来5-10年 想要...原创 2021-03-18 17:07:45 · 154 阅读 · 6 评论 -
tools:replace specified at line: for attribute android:appComponentFactory, but no new value specifi
tools:replace specified at line:for attribute android:appComponentFactory, but no new value specified main manifest (this file), line按照其建议加上tools:replace="android:appComponentFactory" 后依然报错:解决:<application tools:replace="android:appComponentFa...原创 2021-02-19 16:58:05 · 14343 阅读 · 10 评论 -
新功能 Compose解析
首先需要声明 compose只能在kotlin环境下使用 是一个UI库而且没有任何功能限制 旧的java/kotlin功能都能实现 Compose底层不是使用原生控件来实现的 而是一种更偏底层的 新的UI写法 使用@Composable 注解;Text() Button()都带有@Composable 注解 @Composable是编辑器插件直接干预编译过程 直接影响字节码输出逻辑 是一个UI库 不是语言层面的东西 所以就没有一些语言相关关键字的东西...原创 2021-02-19 15:50:54 · 972 阅读 · 2 评论 -
Markdown语法帮助
# 欢迎使用Markdown编辑器写博客---------------------------撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + Shift + H无序列表:Ctrl/Command + Shift + U有序列表:Ctrl/Command + Shift + O检查列表:Ctrl/Command + Shift + C原创 2021-01-07 13:57:10 · 107 阅读 · 2 评论 -
The application could not be installed: INSTALL_FAILED_DUPLICATE_PERMISSION
出现次问题的原因就是两个app声明了相同的自定义权限,而应用包名又不一致一般都是由于 开发时候 权限复制时候 包名没有做更改导致的原创 2021-01-04 16:12:29 · 4748 阅读 · 2 评论 -
java i++和++i ,i--和--i的使用方法和作用
i++ 是先引用后增加 ,先在i所在的表达式中使用i的当前值,后让i加1 ++i 是先增加后引用,让i先加1,然后在i所在的表达式中使用i的新值 他们其实都是i=i+1的意思,但是在程序中运行的时候的执行的顺序不一样。i–-和–-i 的使用方法和作用和 i++ / ++i同理...原创 2020-12-09 16:48:31 · 940 阅读 · 2 评论 -
Android 判断前台和后台 区分通知消息后台显示和前台不显示
区分应用在前台 还是后台运行上代码:public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> appPro..原创 2020-12-08 15:09:33 · 729 阅读 · 2 评论 -
Android 获取签名
微信签名工具获取,签名工具下载地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN原创 2020-12-03 18:25:34 · 274 阅读 · 2 评论