android判断activity是否加载

来源:互联网 发布:qq群地址优化 编辑:程序博客网 时间:2024/04/24 18:39

       聊天应用上常会有好友列表,好友对话列表,逻辑一般是通过点击好友列表上的好友跳转到聊天页面。我们假设好友列表的Activity为A,好友对话列表的Activity为B。正常逻辑是A->B;在B中onReturn()方法是返回到A;

       当聊天应用在外台运行时,有两种情况,一种是点击home键导致程序onPause(),另外一种是退出使得程序的main.activity也应用了finish()。home键的时候main.activity仍然在栈中,这种情况和程序在其它页面时收到通知,点击通知栏直接进入B的情况是一致的;在B中能出只要finish()就可以了,页面会直接返回到之前一个页面;但有一种情况就是当main.finish()后,如果B也是直接finish(),则程序直接回到桌面了;这样的体验就不好,感觉B是一个单独的应用了一样,这时我们可以通过ActivityManager来获取当前应用活动的任务信息,看一下应用的入口Activity是不是RunningTaskInfo中的baseActivity,如果是则代码程序是在运行着的,只需要finish就可以了,否则重新打开应用就好。

Intent mainIntent = new Intent(context, main.class);ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);List<RunningTaskInfo> appTask = am.getRunningTasks(1);if (appTask.size() > 0&& appTask.get(0).baseActivity.equals(mainIntent.getComponent())) {finish();} else {startActivity(new Intent(getActivity(), main.class).putExtra(Contracts.KEY_NOTIFY_LAUNCHER, true));finish();}


 这种情况是因为页面设计与微信,陌陌的不一样,它们的好友列表下面是一个类似于tabhost的布局,这样通知消息只需要进入到好友列表页面就可以了,再通过好友列表来进入对话页面。从而没有关闭对话页面导致程序直接退出的问题,而是关闭对话页面后回到的是好友页面。

原创粉丝点击