Eateeer 的笔记屋


  • 首页

  • 标签

  • 归档

App 共享组件

发表于 2019-03-18 |

如果想要在不同的 App 之间共享 Activity、Service 或广播等,通常有如下三种方法:

  1. 完全暴露:使用 android:exported="true" 来将组件设置为其他 App 都可调用。一般来说还需要指定 里面的 参数
  2. 权限暴露:在 App A 中使用 定义权限,然后在 App B 中使用 申请权限调用 App A 中的组件。
  3. 私有暴露:如果一个公司有两个 App,只想在这两个 App 中相互调用,那么就必须设置 sharedUserId,将两个 App 的 UID 设置为一样的。

下面针对这三种方案进行详细说明。

阅读全文 »

在 WorkManager 中处理异步任务

发表于 2019-02-07 |

WorkManager 是 Android Jetpack 中的新组件,用于负责管理后台任务。关于这个组件的介绍就不多说了,网上到处都是,这里分享一下在 WorkManager 中处理异步任务的方法。

我们知道,在 WorkManager 中,处理任务的方式是创建一个继承自 Worker 的任务类,实现 doWork() 方法,并在这个方法中实现我们自己的任务,然后返回 Result.success() 或 Result.failure() 来表示任务执行成功或者失败。在这里,doWork() 方法中的任务应该是同步的,这是很自然的,因为 doWork() 方法本身就是在子线程中执行,因此可以在 doWork() 方法中同步执行耗时操作。

但是些情况,我们想要执行的是异步任务,在 WorkManager 中,有两种比较好的处理异步任务的方案。

阅读全文 »

【AndroidDevSummit】Text 优化

发表于 2018-11-11 |

忙完了双十一,开始看 Android Dev Summit 2018 的一些视频,后面会对这场交流会的几个感兴趣的 Topic 进行学习和分享。博客内容主要是对视频内容的总结和必要的扩展,其实看完视频就应该理解的差不多了。

这个 Topic 主要分析了 TextView 在渲染时(主要是 onMeasure() 阶段)的性能表现,并分析其耗时的原因,以及优化性能的一些方法。

阅读全文 »

当我们谈 Java 并发的时候,我们在谈什么

发表于 2018-08-01 |

很多人在刚开始学 Java 的时候,会觉得多线程是一块难啃的骨头,特别是对于非科班的同学。究其原因,我想主要是因为没有将多线程建立起一种模型,不清楚多线程的问题到底是怎么产生的。在这里,我就和大家聊一下我对Java 多线程的一些想法。

Java 是基于 Java 虚拟机(JVM)实现的一套编程语言,我们写的 Java 代码是要在 JVM 中才能运行。所谓虚拟机,其实就是模拟了一个操作系统。一个常规操作系统所必备的功能,虚拟机一般也会有。我们计算机的操作系统能管理内存资源,那么虚拟机当然也要能管理内存资源了。在 JVM 里,从逻辑的角度来说,会把内存划分为两部分:线程栈 和 堆。

阅读全文 »

【译】如何阅读 Java 字节码

发表于 2018-07-17 |

原文链接:https://dzone.com/articles/introduction-to-java-bytecode

即使对于一名经验丰富的 Java 程序员来说,阅读编译后的 Java 字节码也会感到枯燥。我们为什么需要了解如此底层的信息呢?在上周,我遇到了一个场景:在很早以前,我在自己的电脑上修改了一些代码,编译成了一个 JAR 文件,然后发布到服务端,检查我更改后的代码是否修复了一个性能问题。不幸的是,这些代码没有被检入版本控制系统,而且不知道什么原因,本地的修改在没有任何的记录下也没了。几个月后的上周,我再次需要这些修改后的代码,然而我找不到他们了!

幸运的是,编译后的代码仍然保留在远程服务端,抱着一丝希望,我下载了 JAR 包然后用反编译软件打开它…然而有一个问题:这个反编译软件的 GUI 界面并不是无瑕疵的,在查看反编译后的某些类时,会导致这个软件崩溃!

特殊情况特殊处理。好在我对字节码还有点印象,相比于使用那个注定会崩溃的反编译软件,我更偏向于自己手动反编译一些代码。

了解字节码的好处在于,一旦你掌握了它,那么在所有 Java 虚拟机支持的平台都能适用——因为字节码只是代码的 IR(中间表示),并不是底层 CPU 直接执行的代码。而且,相比于机器码,由于 JVM 的架构相对比较简单,JVM 的指令集也相对比较少,因此字节码比较容易掌握。并且,Oracle 对这些指令提供了完整的说明文档!

阅读全文 »

【译】Java内存管理简介

发表于 2018-07-04 |

本文是一篇翻译文章,这篇文章用比较通俗的语言简单介绍了 Java 的内存模型和 Java 垃圾回收器的工作流程,是一篇比较好的入门读物。

原文链接:https://dzone.com/articles/java-memory-management

你可能想,如果你是个 Java 程序员,你需要了解内存是怎么工作的吗?Java 有内存自动管理工具,一个优雅且几乎无感知的垃圾回收器,能在后台清理无用的对象,并释放内存。

当然,作为一个 Java 程序员,你不需要关注类似于销毁对象之类的事情。然而,即便在 Java 中这些是自动运行的,也不能保证它是完美运行的。如果你不知道垃圾回收器的构造以及 Java 内存的设计,你可能就会有不受垃圾回收器监控的对象,即使他们都不再被使用。

因此,了解 Java 中的内存是如何运作的十分重要,它能让你编写出高性能并且不会报 OutOfMemoryError 异常的应用。另一方面,如果确实出现了 OutOfMemoryError 异常,你也能迅速找到内存泄漏的地方。

阅读全文 »

ADB 常用命令

发表于 2017-05-22 |

安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。

如果记不住命令怎么办?推荐一个可以快速查看 ADB 命令的插件 adb-idea

find_actions

阅读全文 »

自动装箱和自动拆箱

发表于 2017-03-02 |

今天逛论坛的时候看到一个比较有趣的问题,下面的代码的执行结果是什么:

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
Integer a = new Integer(3);
Integer b = 3;
int c = 3;
System.out.println(a == b);
System.out.println(a == c);

Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
System.out.println(f1 == f2);
System.out.println(f3 == f4);
}
阅读全文 »

从 View 绘制谈性能优化

发表于 2017-02-26 |

在开发过程中,往往会听到 “性能优化” 这个概念,这个概念很大,比如网络性能优化、耗电量优化等等,对我们开发者而言,最容易做的,或者是影响最大的,应该是 View 的性能优化。一般小项目或许用不上 View 性能优化,然而,当业务愈加庞大、界面愈加复杂的时候,没有一个良好的开发习惯和 View 布局优化常识,做出来的界面很容易出现 “卡顿” 现象,从而严重影响用户体验。而对于我们开发者来说,了解一些 View 性能优化的常识,增强开发技巧,可以说是一门必备的功课。

为了更好地理解 View 性能优化的原理,以及造成 “卡顿” 的可能原因,我们从 View 的绘制流程开始讨论。之后,会介绍一些写界面布局常用的一些标签及使用注意事项。

阅读全文 »

Gson中文指南

发表于 2017-01-13 |

原文地址:https://github.com/google/gson/blob/master/UserGuide.md

Gson 库中最重要的类是 Gson,你可以通过调用 new Gson() 来创建一个 Gson 对象。同时也提供一个 GsonBuilder 类来创建一个 Gson 对象,这种创建方式允许自定义多种配置信息。

Gson 对象在调用 Json 相关的操作时并不会保存任何状态信息,因此你可以在同一个项目中使用重复使用同一个 Gson 对象来对多个 Json 进行序列化和反序列化操作。

阅读全文 »
12…4
Eateeer

Eateeer

35 日志
4 标签
© 2019 Eateeer
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.3