Window android.app.Activity.getWindow()Retrieve the current android.view.Window for the activity. This can be used to directly access parts of the Window API that are not available through Activity/Screen.Returns: Window The current window, or null if the activity is not visual.我感觉这个函数应该对楼主有帮助。哈哈
希望有很好的办法
这里 不知道当前是哪个页面?也许程序目前正在后台运行,因为程序是多个activity的!
service可以做的。
然后你在AndroidManifest里面就把所有的Activity的
<intentfilter>
<action name="这里设置成为你监听系统事件的字段,你把系统的action放这里就可以"/>
</intentfileter>
parentActivity用来处理所有Activity公共的事件,
比如像你这种情况可以,在parentActivity中写一个监听,在parentActivity中处理监听到的结果就好了。
比如做个页面管理器,知道哪个页面是当前页面,当有事件出发弹出对话框时,不在其他页面弹出,而在这个管理器提供的当前页面给弹出来,这是我们现在的做法!不知道你们的项目有没有更好的方式!
我也不是很明白,到底有多个Activiy哪里是不合理的,都是不能复用的页面如何组织,比如九宫格,各个不同的功能,为什么不能有多个Activiy?我目前的使用的方法也是继承自一个Activiy,但是在生成Dialog时,传递了当前的Context,我倒是没有考虑过是否其他所有的子Activiy都会受影响的问题···
这个方法可以的,我就是这么实现的,和楼主的类似我就是做了个提醒功能,在指定时间提醒。
在service中监听,到时间后发送广播,然后广播会弹出你想要弹出的activity页面
有过android大型软件开发经验的人一定会有这种需求!
Window The current window, or null if the activity is not visual.我感觉这个函数应该对楼主有帮助。哈哈
能否解释下为什么一个程序中有很多activity本身就是不合理的?初学者,不太明白
StringBuffer sInfo = new StringBuffer();
final ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(100); Iterator<RunningTaskInfo> l = tasks.iterator();
while (l.hasNext()) {
RunningTaskInfo ti = (RunningTaskInfo) l.next();
sInfo.append("id: ").append(ti.topActivity);
}
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
这个是 获取自己程序的最顶层Activity?
这个可能不行,因为你虽然弹出来了,可与原来的程序基本没关系,比如用户点击了返回,那你只能把自己finish(),可是无法回到自己的程序中!
其它样式,可以让每个 Activity 都继承一个 BaseActivity。
BaseActivity 监听了“新通知”的广播,收到广播时,判断对话框是否已经显示,如果没有显示,则AlterDialog,或者 startActivity一个Dialog样式的Activity。
你在AndroidManifest里面
<activity android:name=”.DialogActivity” android:label=”@string/activity_dialog” android:theme=”@android:style/Theme.Dialog”>
<intentfilter>
<action name="这里设置成为你监听系统事件的字段,你把系统的action放这里就可以"/>
</intentfileter>
</activity>
即监听到某个事件以后就起这个activity,里面可以放任何东西
或者说……
楼主你是不是这个意思,你假定弹出对话框的时候你的程序没有在前台运行?然后弹出对话框后点返回就返回到了之前你程序最后运行的那个activity?
起始这个功能 应 狗哥给提供,就是返回 自己的程序的最后一个页面,这个应该是个历史链,只是目前看 狗哥没有这样的功能,那么就是需要我们自己实现了!这个帖子之前是结贴了,原因就是 我们开发的时候自己做 的历史链,这样才能只知道 这个弹出的对话框的上一个页面是啥,但自己实现总是有些别扭,所以再次关注是否有更好的办法,或者某天 android的X.Y版 提供了这样一个方法!
1.App前台运行,此时弹出AlertDialog后返回当前Activity当然没问题.一个点击关闭直接OK.
2.App后台运行,此时弹出AlertDialog(怎么样弹出不管,前面已经有解决方案),此时如何返回用户App最后显示的那个Activity.
针对楼主这种需求,最好的方法就是声明一个静态全局变量来保存用户切换窗口时的Activity了.
楼上已经提到,不过实现起来还是有点问题的.
可以换种思路来说,怎么样的动作会使得App从前台转换到后台呢?
其实只要在楼主App的特定入口处(前台--->后台)为Activity全局变量赋值就可以了.典型的情况就是当用户按下Home按键返回桌面时,调用已经重写过的父类Activity的onPause()方法.
TAOST是有要求的,比如必须需要一个有界面的上下文,如果没有那就崩溃了!
如果同一时间只可能有一个top的话,那么只会有一个子activity来弹出toast。不知道可不可行,请教下大家。