总觉得楼主说的是不可能的,Android同一时间只允许一个Activity处于顶层的

解决方案 »

  1.   

    动态壁纸live wallpaper 可以参考一下
      

  2.   

    WindowManagerImpl 大家看过这个类吗?这个是一个没有公开的api里面的注释得意思是说view top-level 大体的意思是可以将view 最高级别。
    有人用过WindowManagerImpl 类马?
      

  3.   

    这个,假如仅仅是实现的,那lz直接用一个activity不就行了吗?
    你一个activity肯定只有一个窗口啊。
    其余的所有作为后台运算,或者用service,或者用多线程。或者比较变态的,每个activity用同一个layout文件,那么至少表面看起来,你就是一个窗体。
      

  4.   


    但是一个应用程序是不可能只有一个activity 的。而且一个activity 的话也不能实现应用。
      

  5.   


    我的程序是在别人的基础上的类似于插件的功能,我要让我的用户在原始的应用中始终看到我的窗体,如:源程序有Aactivity 和Bactivity 我在Aactivity 中显示我的窗体的可以做到,但是如果用户转到Bactivity以后我的窗体就会消失。而我要实现的是只要应用程序启动,不管是Aactivity 还是Bactivity 都可以看见我的应用程序。这样够明白吗?您能看懂了吗?
      

  6.   

    我编译了android 的源码看他的api 中有一个隐藏的WindowManagerImpl类。貌似是可以实现我的要求但是这个类在eclipse 中是不能使用的,有高手用过这个类吗?或者高手根本没有看见这个帖子? 高手没有吗?
      

  7.   

    Window一般要依赖一个Activity的, 没办法这样做的。除非你有源代码,修改一下framework。看下statusBar,它是可以一直在那的。
      

  8.   


    是的我已经编译了android 的源码了,您用过android 隐藏的api 吗?编译了源码之后我将自己用到的类make 之后导入到手机中发现不能用。
      

  9.   


    在源码上编译的话,基本上就确定了你的应用只适用于你所使用的源码对应的产品了。 因为用了源码,就用了私有的接口,这些各个厂家都会自己修改的,大家只保证sdk开放的接口一致能用,没开放的,随便删改无所谓的。这样的话,你用不开放的模块编译,能在几台机器上跑,就是个大问题了。另外,在源码上编译的应用,由于一般源码开发的工程都是配置成工程开发模式,可以有很高的权限的,装到别人的机器上,不一定给你这个权限。 你要开发个一致弹出不消失的window. 可以有做成恶搞程序搞破坏界面的嫌疑... 我的看法:通用机器做不到的!还是老老实实写个Activity吧,生命周期交给Android去控制,别想那么多。
      

  10.   

    我可以将我用到的包做成一个jar 包的方式,当用户安装我的程序的是自然会把jar包安装到程序中,所以您说的不兼容一些机器的情况我觉得应该不会发生。至于恶意弹窗那就更加不是了,我要做的是开发这个借口,其他人可以在他们的应用程序中调用我的借口。
    android 的源码statusBar 不也相当于一个组建一样的东西一直显示吗?我要的是一直显示一个view 而已。呵呵 谢谢您的建议。
    所有回答的人中,您是最靠谱的。呵呵 如果可以的话我加您好友行吗?
      

  11.   


    顶部的通知栏也是用了 WindowMangerImpl 这个没有公开的api把?我等下看看 回复您。
      

  12.   

    动态的壁纸是后台的service 执行把。但是并不是一直显示在应用程序中,我要得是一直显示,不会被覆盖或者是被销毁。 
      

  13.   


    应用层来说,还是没辙的。除非做成系统服务。
    应用层的程序,生命周期是有限的,不管是activity还是service。你要你的window一直在最前面,只能改windowManager相关的代码,这是不可能的事情。
    无所谓你做成jar与否,它只是静态的库而已,这与运行时行为无关,运行时的行为,已经确定了,Activity的生命周期就那么长。
      

  14.   

    可不可以定义一个superActivity 这个超类里面自带一个窗口 然后每个Activity都继承这个超类
      

  15.   


    如果这样,倒是可以看看
    从layout着手看看能不能实现
    相当于在原有的layout上,再塞一个前台显示的framelayout。windows的方式貌似不可以, window的接口没有放出来,需要再源码中才可以。
      

  16.   

    我已经将源码编译并打包使用了没有开放的源码包,但是现在有了一个新的问题。当我创建一个application window 的时候会报一个null token 的错误。但是我创建一个toast或者alert 时就不会报。
    您说的这个只能在一个activity 中实现,但是如果我的activity 改变了这个窗体还存在马?
      

  17.   

    楼主看看这个把。http://xsmile.net/?p=404