区别
- object 可以定义在全局也可以在类的内部使用
- object 就是单例模式的化身
- object 可以实现 Java 中的匿名类
- companion object 就是 Java 中的 static 变量
- companion object 只能定义在对应的类中
- object …
源码位置:PackageInstallerSession.java 。
{% include_code lang:java from:689 to:750 aosp/8.1/frameworks/base/services/core/java/com/android/server/pm/PackageInstallerSession.java %} 该方法主要发送了一个MSG_COMMIT消息。下面看Handler如何处理这个消息。
{% include_code lang:java from:275 to:303 aosp/8.1/frameworks/base/services/core/java/com/android/server …
程序是一系列指令的集合,通常存为可执行文件。进程是程序的执行过程。
使用ps可以查看系统正在运行的进程。 ps --help显示该命令的用法。
ps -e -o USER,PID,PPID,GID,NAME
USER PID PPID GID NAME CMD
root 1 0 0 init init
root 2 0 …
基于AOSP 8.0.1源码分析force-stop的实现细节。
am force-stop com.example
com.example 是应用程序包名。
cat /system/bin/am
#!/system/bin/sh
if [ "$1" != "instrument" ] ; then
cmd activity "$@"
else
base=/system
export CLASSPATH=$base/framework/am.jar
exec app_process $base/bin com.android.commands.am.Am "$@"
fi
am 是一个shell脚本。如果第一 …
在阅读Android Framework代码时,有时需要动态调试加深理解,或者想调试某个API的实现原理(如startActivity)时,希望可以使用Android Studio调试,且可以对应到源码的每一行,故需要搭建一个调试环境。
实现 pow(x, n) ,即计算 \(x\) 的整数 \(n\) 次幂函数(即,\(x^n\) )。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释 …
export NDK_ROOT=~/android-ndk-r18b
${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
--target=x86_64-none-linux-android
--gcc-toolchain=${NDK_ROOT}/toolchains/x86_64-4.9/prebuilt/linux-x86_64
--sysroot=${NDK_ROOT}/sysroot
-isystem ${NDK_ROOT}/sysroot/usr/include/x86_64-linux-android
-pie -o hello.c.o -c hello.c
${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
--target=x86_64-none-linux-android
--gcc-toolchain=${NDK_ROOT}/toolchains/x86_64-4.9/prebuilt/linux-x86_64
--sysroot ${NDK_ROOT}/platforms/android-21/arch-x86_64
-pie hello.c.o -o hello
${NDK_ROOT …
// http://androidxref.com/6.0.1_r10/xref/system/core/libutils/String16.cpp#allocFromUTF8
static char16_t* allocFromUTF8(const char* u8str, size_t u8len)
{
const ssize_t u16len = utf8_to_utf16_length(u8cur, u8len);
utf8_to_utf16(u8cur, u8len, u16str);
}
namespace android{
//! This is a string holding UTF-16 characters.
class String16{
private …
http://androidxref.com/6.0.1_r10/xref/system/core/include/utils/StrongPointer.h http://androidxref.com/6.0.1_r10/xref/system/core/include/utils/RefBase.h http://androidxref.com/6.0.1_r10/xref/system/core/libutils/RefBase.cpp
区分从来没有指针引用该对象,还 …