需求:点击推送下消息,首先进入详情页面,然后从详情页面退出时- 1. 判断界面栈是否存在主页面,如果存在(也就是启动状态的app),就直接退出当前页面;2. 如果不存在(没有启动过),则退出详情时返回主页面。
其实重点就是利用Activity管理器获取运行任务栈信息,然后进行判断:
boolean isAppRunning = false;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(1000);
for (ActivityManager.RunningTaskInfo info : list) {
///< 如果直接进入推送详情或者广告详情,那么此时判断进程是存在的;但是主页页面并没有启动,所以不能用这种方式判断主页面是否或者!
// if (info.topActivity.getPackageName().equals(processName) &&
// info.baseActivity.getPackageName().equals(processName)) {
// isAppRunning = true;
// // find it, break
// break;
// }
///< 判断HomeActivity是否活着
if (HomeActivity.class.getName().equals(info.baseActivity.getClassName())) {
isAppRunning = true;
// find it, break
break;
}
}
return isAppRunning;
然后你在详情页面返回增加判断处理跳转:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_DOWN) {
///< 判断主页面是否活着
if (!SystemUtils.isAppAlive(InfoNewsDetailActivity.this, "xxx.xxx.xxx")) {
Intent intent = new Intent(InfoNewsDetailActivity.this, HomeActivity.class);
startActivity(intent);
}
finish();
}
return super.onKeyDown(keyCode, event);
}
其他问题遇到了再看看怎么解决....
网友评论