添加到init.rc脚本中,然后自编译系统。
app_process进程!!!
首先要求对一对多,所有只能考虑Binder或者Socket.
1.zygote比service manager先启动,从这个意义上,他没有service manager可以注册,所以没法用binder.
2.zygote和service manager都是init进程启动的,就算先启动service manager,也不能保证zygote起来的时候service manager就已经初始化好了(这就需要额外的同步,太麻烦)。
3.这个sorcket的所有者是root,group是system,只有系统权限的用户才能读写,这又多了一层安全保障。
4.zygote是通过fork生成进程的,而多线程是不允许使用fork,可能造成死锁,同时binder又是多线程的,所以干脆不同binder而使用socket.
zygote进程的作用:
包管理,包解析,结果缓存,提供查询接口。
得到如下:
AMS缓存中心:ActivityThread
Activity在应用端由ActivityClientRecord负责描述其生命周期的过程与状态,但最终这些过程与状态是由ActivityManagerService(以下简称AMS)来管理和控制的
描述了应用进程的BroadcastReceiver,由BroadcastQueue负责管理。
描述了Service服务组件,由ActiveServices负责管理。
描述ContentProvider内容提供者,由ProviderMap管理。
用于描述Activity,由ActivityStackSupervisor进行管理。
manifest.xml 添加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
问题Main.log:
FATAL EXCEPTION: main
Process: com.android.phone, PID: 761
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@1cb8bd0 is not validis your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:562)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:282)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
at android.app.Dialog.show(Dialog.java:298)
at android.preference.DialogPreference.showDialog(DialogPreference.java:316)
at com.android.settings.EditPinPreference.showDialog(EditPinPreference.java:103)
at com.android.settings.IccLockSettings.handleGetRemainTimesResponse(IccLockSettings.java:174)
at com.android.settings.IccLockSettings.access$300(IccLockSettings.java:71)
at com.android.settings.IccLockSettings$1.handleMessage(IccLockSettings.java:156)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5345)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:947)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:742)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)