Android P AMS与ActivityThread处理Activity生命周期--ClientTransactionHandler

本文探讨了在Android P系统中,ActivityThread如何扩展ClientTransactionHandler以及AMS如何通过ClientTransaction控制Activity的生命周期。AMS通过ApplicationThread调度生命周期交易,而具体执行的生命周期阶段取决于ClientTransactionItem的类型,如LaunchActivityItem、PauseActivityItem等。这些Item实现了Parcelable接口,使得能在进程间传递。在ActivityThread内部,通过TransactionExecutor执行相应的生命周期回调。
摘要由CSDN通过智能技术生成

在Android P中,ActivityThread extends ClientTransactionHandler,而ClientTransactionHandler封装了handlexxxActivity的方法。

而AMS控制Activity的生命周期,通过ApplicationThread#scheduleTransaction(ClientTransaction),而去到应用进程后,具体执行哪个生命周期,看ClientTransaction#addCallback(ClientTransactionItem)中的ClientTransactionItem是什么子类型,还有ClientTransaction.setLifecycleStateRequest(ActivityLifecycleItem);其中可以有多个callback。LaunchActivityItem就是要执行LaunchActivity任务,而PauseActivity则是PauseActivityItem,StopActivity则是StopActivityItem,Destroy Activity则是DestoryActivityItem。

ClientTransactionItem implements BaseClientRequest, Parcelable

ActivityLifecycleItem extends ClientTransactionItem

LaunchActivityItem extends ClientTransactionItem

ResumeActivityItem exttends ActivityLifecycleItem

PauseActivityItem extends ActivityLifecycleItem

StopActivityItem extends ActivityLifecycleItem

DestroyActivityItem extends ActivityLifecycleItem

可以看到AMS能把ClientTransactionItem 传到应用进程是因为它实现了Parcelable。

ApplicationThread#scheduleTransaction(ClientTransaction):

public void scheduleTransaction(ClientTransaction transaction) throws RemoteException {
            ActivityThread.this.scheduleTransaction(transaction);
        }

 ClientTransactionHandler#scheduleTransaction()

    void scheduleTransaction(ClientTransaction transaction) {
        transaction.preExecute(this);
        sendMessage(ActivityThread.H.EXECUTE_TRANSACTION, transaction);
    }

ActivityThread.H.EXECUTE_TRANSACTION的处理:

case EXECUTE_TRANSACTION:
                    final ClientT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值