OOFTF Blog

「美好的事情即将发生」

Service

获取当前Service 列表,高版本只能获取到自己APP的 Service 无法获取到其他App的 Service 1 2 3 4 fun listServices(mContext: Context): MutableList<ActivityManager.RunningServiceInfo> { val activityManager = mConte...

Broadcast Reciver

特性 监听特定事件 分为有序广播和无序广播 有序广播可拦截 两种注册方式 静态注册 无序广播 1 2 3 4 5 6 7 8 <receiver android:name=".service.MyBroadcastReceiver" android:enabled="true" and...

Kotlin 内联

1. inline 1.1 inline 函数的目的 减少方法的调用,进而减少虚拟机栈的出栈入栈操作 优化 Lambda 开销 1.1.1 优化 Lambda 开销 在Kotlin中每次声明一个Lambda表达式,就会在字节码中产生一个匿名类。该匿名类包含了一个invoke方法,作为Lambda的调用方法,每次调用的时候,还会创建一个新的对象。可想而知,Lambda虽然简...

Android 9.0 Http配置

在Android9异常使用Http请求会抛出以下异常 1 2 3 4 5 6 HttpUrlConnection: W/System.err: java.io.IOException: Cleartext HTTP traffic to ** not permitted. OKHttp: W/System.err: java.net.UnknownServiceException: CLE...

ViewBinding

ViewBinding gradle 配置 视图绑定功能可按模块启用。要在某个模块中启用视图绑定,请将 viewBinding 元素添加到其 build.gradle 文件中,如下例所示: 1 2 3 4 5 6 android { ... buildFeatures { viewBinding true } } 使用说明 为某个模块启用视图绑定功...

Mvx

MVX是一下三种模式的统称 MVC MVP MVVM MVC MVC 模型中实线表示方法调用关系,虚线表示事件的传递方向 一个输入事件的工作流程:View 将事件通知到 Controller ,Controller更新Model数据,Controller通知View更新页面,View调用Model方法获取新数据 MVP 工作方式 当视图接收到来自用户的事件时,...

Kotlin 内部类

内部类 通过字节码分析内部类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class ExternalClass { fun go(){ } fun test() { object :View.OnClickListener{ override fun onCl...

Java位运算符

左移( « ) 5 « 2 首先会将5转为2进制表示形式(java中,整数默认就是int类型,也就是32位): 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0: 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20 右移( » ) 5 » ...

CoordinatorLayout

CoordinatorLayout 默认情况下 child 布局类似 FrameLayout 关键属性 app:layout_behavior=”@string/appbar_scrolling_view_behavior” 决定了。Child 之间的相对位置,和对于滑动事件的消费优先级 AppBarLayout 继承自 LinearLayout ,所以 Child 布...

DataBinding

优点 有效避免空指针异常 代码变得更少了 google 提供的 adapter 属性 太少 缺点 异常排查变得复杂 View 复用性降低 原理解析 原理解析 DataBinding 配置 1 2 3 4 5 android{ buildFeatures { dataBinding true } } 相关类解释 Data...

WorkManager

WorkManager 调度在退出应用或重启设备后仍应运行的可延期异步任务 使用底层作业来调度服务 示例 创建一个Worker ```kotlin class UploadWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { overrid...

Github优秀软件

项目名字 项目描述 Genymotion_ARM_Translatio 使 x86 架构的 Android 虚拟兼容 arm 架构 Microsoft-Activation-Scripts Window office 激活工具 ...

Exception

UnsatisfiedLinkError 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__emutls_get_address" referenced by "/data/app/~~aY8Bs7K...

Profiler

CUP 点击Record按钮开始记录,点击Stop按钮结束选取 功能 查看各个线程占用的CUP资原 查看函数调用 官网文档 如图所示 红色部分:历史Record记录 黄色部分:操作台用于发起Record 蓝色部分:当前CPU占用情况 绿色部分:各个线程占用CUP情况,由可知现在线程com.chaitai.crm (主线程)占用大量CPU资原 Trace ...

对象

对象的创建 Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢? 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用...