zoukankan      html  css  js  c++  java
  • 基于Android 4.4 开发的多窗体系统 开放源代码

    Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源。



    视频地址

    源代码地址


    Done:

    1. APP以窗体化显示

    在 PhoneWindowManager::layoutWindowLw() 中通过packageName过滤,使指定的APP以非全屏尺寸显示,由于一个APP一般是以一个task为单位,显示多个activity,因此採用packageName过滤的方法。


    2. 多个APP同一时候处于 onResume 状态

    改动AMS中通知onPause()的地方,指定pkg不通知pause。关于AMS中activity生命周期控制的地方,是以后须要着重优化的。


    3. 改动Window的touch region

    改动InputMonitor::addInputWindowHandleLw(), 使得Window拦截touch event的region仅仅在本窗体范围内。


    4. Touch的window 上移到屏幕顶层

    在AMS,WindowSession中新增接口,在ViewRootImpl里拦截touch event,通过 windowSession通知WMS,和AMS,将Window 和 task 移至顶层。


    5. RecentActivity 启动到 APP stack中

    因为同stack中task切换时的visibility切换还较好控制,可是假设跨stack切换,控制较为困难,因此将RecentActivity移至APP stack中启动,这样呼出RecentActivity,切换APP时,不会出现一些显示上的bug。


    6. 为Window添加titlebar

    在PhoneWindow::generateLayout() 中添加titlebar,包含close, minimum, maximum, drag area, resize。

    minimum尚未实现,由于还要结合AMS做一些控制activity生命周期的工作。


    7. 增增加口APP

    提供用户选择让哪个APP以窗体化形式启动,并在ServiceManager中注冊了一个自己定义的service,里面存放了要窗体化显示的pkgs,然后供framework各处调用。


    Next plan:

    1. 修正各种bug

    bug之多简直不忍直视了。。。关键还是对源代码非常多地方不够熟悉,因此总是头痛医头,脚痛医教。


    2. 熟悉AMS控制流程

    设计合理的多窗体activity生命周期,完毕 minimum。

    更新于20140730-------------------------------------------------------------------------------------------

    简单的介绍multi window开发过程的PPT:下载地址


  • 相关阅读:
    大型高并发高负载网站的系统架构(转)
    亿级数据的高并发通用搜索引擎架构设计(转-张宴)
    VMware12版虚拟机怎么安装win7系统(详细教程
    Linux-CentOS7 安装VMware Workstation 12
    IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
    idea 创建maven工程(入门)
    SQL中inner join、outer join和cross join的区别
    OLTP和OLAP有何区别?
    HAWQ 官方文档创建filespace,tablespace,database,table
    DQL、DML、DDL、DCL的概念与区别
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4011890.html
Copyright © 2011-2022 走看看