OOFTF Blog

「美好的事情即将发生」

Annotationprocessor

annotationProcessor 引入方式 kapt annotationProcessor 相关框架 JavaPoet 用于生成Java代码 auto-service ? //com.google.auto.service:auto-service

RemoteView

RemoteView RemoteViews 并不是一个真正的 View 而是将一些常用的 View 操作通过跨进程封装,实现了远程控制 View。 RemoteViews 并不是真的将一个进程的 View 传递给另一个进程。而是在“远端”进程创建 View,本地进程通过 RemoteViews 控制“远端” View。 用途 1 2 3 4 5 6 7 8 9 10 11 在其它进程...

Java访问权限

访问权限 public protected default private 只有default和public可以修饰类 修饰类的时候 default 只能同包使用 public 没有限制 修饰变量和方法 private 只能本类访问 default 本类 + 同包访问 protected 本类 + 同包访问 + 不同包子类可访问...

App之间交互的几种方式

定义Intent 发送消息Intent sendIntent = new Intent(); 1 2 3 4 sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.setType("...

Android架构

https://source.android.com/devices/architecture

混淆

混淆 语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 1. -keep class cn.hadcn.test.** -keep class cn.hadcn.test.* 一颗星表示只是保持该包下的类名,而子包下的类名还是会被混淆;两颗星表示把本包...

数据结构

从底层数据结构来看,可分为三类 数组 链表 二叉树 从使用特性或者抽象概念来说来说可分为 集合 Map 队列 Queue 栈 stack 线性表 数组 数组是一种存储单元连续,用来存储固定大小元素的线性表。java中对应的集合实现,比如ArrayList。 链表 链表又分单链表和双链表,是在物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通...

多线程

多线程 线程 priority 线程的优先级是继承于创建它的线程的。 优先级只是代表告知了 「线程调度器」该线程的重要度有多大。如果有大量线程都被堵塞,都在等候运 行,调试程序会首先运行具有最高优先级的那个线程。然而,这并不表示优先级较低的线程不会运行(换言之,不会因为存在优先级而导致死锁)。若线程的优先级较低,只不过表示它被准许运行的机会小一些而已。...

Toolbar

OptionMenu遮挡按钮问题,修改OptionMenu背景颜色 1 2 3 4 5 setPopupTheme(R.style.ThemeOverlay_Toolbar_PopupMenu); <style name="ThemeOverlay.Toolbar.PopupMenu" parent="ThemeOverlay.AppCompat.Light"> ...

Dialog

设置dialog大小 1 2 3 WindowManager.LayoutParams attributes = getWindow().getAttributes(); attributes.width = (int) (getContext().getResources().getDisplayMetrics().widthPixels * percent...

Scrollview

fillViewPort

Recyclerview

滚动 RecyclerView item 不出屏幕不会触发 addOnLayoutChangeListener 和 getViewTreeObserver().addOnGlobalLayoutListener 事件 滚动 RecyclerView item 出屏幕再回来会触发 addOnLayoutChangeListener 但是不会触发 getViewTreeObserver...

Constraintlayout

layout_constrainedHeight 可以防止子View在wrap模式下超出父控件 当一个控件设为wrap_content时,再添加约束尺寸是不起效果的。如需生效,需要设置如下属性为true: app:layout_constrainedWidth=”true|false” app:layout_constrainedHeight=”true|false” ...

敏捷开发

相关资料 百度百科 为什么会产生敏捷开发 传统开发模式存在以下问题 开发周期长,使得开发过程难以预期,无法按照计划进行交付 由于无法按照计划交付,无法得到可交付成果,会产生沮丧感,无法得到成就感 什么是敏捷开发 是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使...

Jcenter

HTTP/1.1 404 Not Found [message:Repo ‘maven’ was not found] publish { repoName = ‘maven’ // 默认是maven,如果不是maven需要指定 userOrg = ‘ooftf’ // bintray注册的用户名 groupId = ‘com.ooftf’ arti...

Android Studio

修改xml模板 查看@hide源码 Android studio 插件推荐 Android WIFIADB 通过 wifi 链接手机 ADB jclasslib Bytecode viewr 查看Java字节码的插件 当代码修改后需要重新编译,然后点击红色标注出的Reload按钮,才会显示新的字节码 JSON To kotlin class 将Json...

Jenkinsandroid

JenkinsAndroid 1 2 3 4 5 6 7 8 9 Gradle task build表示编译所有版本 勾选 Use Gradle Wrapper 勾选 Force GRADLE_USER_HOME to use workspace 解决gradle路径过长问题 assemble --stacktrace --debug ### Gradle 配置 Gradle ta...

Bugly

一定要添加 provider ,任何高级设置都需要在init方法之前完成