Android service framework 中主要的类

Android service framework 中主要的类

Android service framework 中主要的类

Android 4.4 开启开发者模式

Android 4.4开发者模式实在是隐藏的太深了。 ^_^

Settings –> About phone —>

1

1

Binder RPC数据以及Binder IPC数据的处理过程

BinderRPC数据的处理过程

ref: 《Android框架揭秘》 p.305

Android JNI 优化

在类加载时获取域和方法的ID

JAVA端:

public class MyClass {
	static {
		System.loadLibrary("mylib");
		/*在加载库的时候一次性获取需要访问的域和方法的ID*/
		getIds();
	}

	public static int someInteger = 0;
	public static native void sayHelloToJNI();
	public static void helloFromJNI() {
		Log.i("MyClass", "Greetings! someInteger = " + someInteger);
	}

	private static native void getId();
}

C/C++端:

static jfieldID someIntegerId;
static jfieldID helloFromJNIId;

void JNOCALL Java_com_apress_proandroid_MyClass_sayHelloJNI(JNIEnv *env, jclass clazz) {
	/*这里不在需要获取ID*/

	jint value = (*env)->GetStaticIniField(env, clazz, someIntegerId);
	(*env)->SetStaticIntField(env, clazz, value + 1);

	(*env)->CallStaticVoidMethod(env, clazz, helloFrmoJNIId);
}

/*获取JAVA端的ID*/
void JNICALL Java_com_apress_proandroid_MyClass_getIds(JNIEnv *env, jclass clazz) {
	someIntegerId = (*env)->GetStaticFieldID(env, clazz, "someInteger", "I");
	helloFromJNIId = (*env)->GetStaticMethodID(env, clazz, "helloFromJNI", "()V");
}

ref: 《Android应用性能优化》 p.51

System Service 与 Service Manager的关系

SystemService与ServiceManager的关系