标签归档:动画

悬浮窗开发的总结

1、动画和点击区域问题

可以使用hide方法viewTreeObserver下的方法进行窗口裁剪实现局部透过点击事件,这样在动画的时候就不需要考虑进行window大小变化了

2、 启动慢的问题

1)由于悬浮窗启动一般使用的是service启动,通过分析ams可以发现,在进行activity启动的是有进行powehint操作的,而一般的service是没有的,如果系统是自家的可以考虑在启动自己的服务的时候加上powerhint操作

2)使用startforgroundService的方式提高进程的优先级

3) 考虑使用异步layoutinfler来实现在applictaion创建时候就着手准备view

3、偶现UI不刷新,但没有anr

这个问题,赶紧查查进程的OOM_ADJ,大概率是优先级过低,得不到系统的资源调度问题 查看更多

Android Activity桌面冷启动的9.0源码流程

ActvityRecord创建时机,Pause后台Activity时机,开屏动画是否是Activity的Window, ActvityRecord 加入到Task和Stack的时机,进程启动后如何继续之前的Activity操作

1启动时序

1.1 App端启动:

所有context的实现都是来自 ContextImpl 一般来说都是使用一个ContextWrapper 来包裹 ContextImpl

ContextImpl.java:

Instrumentation.java:

上述函数中token表示启动者的token,可能会用于接收activittyResult,当调用方法为startActivityForReuslt时

contextImpl.java

broadcastIntent 最终调用的IActivityTaskManager 的binder接口

private final ApplicationContentResolver mContentResolver;

然后可以通过ApplicationContentResolver 调用ActivityThread 里的方法来得到Binder代理对象 查看更多