android中的token
来源:互联网 发布:淘宝网民真实评价 编辑:程序博客网 时间:2024/05/20 14:22
token顾命思意,象征符号,到底是什么的象征呢?我们在看andorid源码的时候,经常会碰到程序与系统service之间的通信,我们也知道进程间通信会用binder机制!
而这个token就是一个IBinder类型代表远程service的stub对象!
以下分析以6.0代码为准!
1: activity中的mToken
activity启动流程中mToken一路传递:具体参考老罗的Android应用程序启动过程源代码分析
Actvity.startActivity() -> Instrument.execStartActivity()->ActvityManagerService.startActivity() ->ActivityStackSupervisor.startAcivtyMayWait() ->ActivityStackSupervisor.startAcivtyLocked()
代码中会查找mToken所包含的ActivityRecord中的taskrecord是否在taskrecord中
这里mToken是一个IApplication.stub实例,可以看下下面这块代码:
ActivityRecord isInStackLocked(IBinder token) { final ActivityRecord r = ActivityRecord.forTokenLocked(token); return isInStackLocked(r); }
可以看下forTokenLocked()源码
static ActivityRecord forTokenLocked(IBinder token) { try { return Token.tokenToActivityRecordLocked((Token)token); } catch (ClassCastException e) { Slog.w(TAG, "Bad activity token: " + token, e); return null; } }
Token是ActivityRecord的内部成员类
static class Token extends IApplicationToken.StubToken.tokenToActivityRecordLocked()里面获取activyRecord对象
2:view中的mWindowToken
首先看下mWindowToken的获取
public IBinder getWindowToken() { return mAttachInfo != null ? mAttachInfo.mWindowToken : null; }view中的mWindowToken是mAttachInfo的一个成员,先来看下AttachInfo的构造函数
AttachInfo(IWindowSession session, IWindow window, Display display, ViewRootImpl viewRootImpl, Handler handler, Callbacks effectPlayer) { mSession = session; mWindow = window; mWindowToken = window.asBinder(); mDisplay = display; mViewRootImpl = viewRootImpl; mHandler = handler; mRootCallbacks = effectPlayer; }
mAttachInfo的初始化实在viewRootImpl中!
public ViewRootImpl(Context context, Display display) { mContext = context; mWindowSession = WindowManagerGlobal.getWindowSession(); mDisplay = display; mBasePackageName = context.getBasePackageName(); . . . mWindow = new W(this); . . . mAttachInfo = new View.AttachInfo(mWindowSession, mWindow, display, this, mHandler, this);
这里W 也是一个stub类,定义在viewRootImpl中
static class W extends IWindow.Stub(
0 0
- Android中的Token
- android中的token
- Token在android中的使用
- Token在android中的使用
- Android启动Activity流程中的Token分析
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- Android客户端与服务器交互中的token
- struts中的令牌token
- struts2中的token算法
- web安全中的token
- HttpClient的post请求
- Spring概要(一)
- xml
- leetcode刷题,总结,记录,备忘 329
- Oracle试卷02
- android中的token
- uva10271
- TCP/IP总结
- 【iOS--pod】使用初体验 --> libjingle_peerconnection
- 阿里云ECS在linux系统下安装mysql
- 解决Matplotlib绘制的图表不能正确显示中文
- c/c++栈与队的数组实现方法
- maven权威指南archetype创建简单项目报错解决
- 接口。。。。。。