判断某个activity是否在栈顶

这个判断很重要,由于当某个activty在栈顶的话,意味着它就是当前咱们看到的页面。今天在作的消息弹窗功能,涉及两个地方,一个是列表,另外一个是点击列表项打开的activity页面。javascript

异常现象:从activity返回到列表后,弹窗的事件来时,弹窗出现异常。
缘由分析: activity实例还存在,就是说发生了内存泄漏。
临时救场措施:在发生内存泄漏的activity里的弹窗代码以前,判断activity是否在栈顶,是的话就让它往下执行,不然就返回。java

判断activity是否在栈顶的代码以下:web

private boolean getTopApp(Context mContext) {
		String lockAppName = "com.wong.ItemActivity";
		String topActivityName = "";
		ActivityManager am = (ActivityManager) mContext
				.getSystemService(Context.ACTIVITY_SERVICE);
		List<ActivityManager.RunningTaskInfo> runningTasks = am
				.getRunningTasks(1);
		if (runningTasks != null && !runningTasks.isEmpty()) {
			ActivityManager.RunningTaskInfo taskInfo = runningTasks.get(0);
			topActivityName = taskInfo.topActivity.getClassName();
		}
		if (lockAppName.equals(topActivityName)) {
			return true;
		}
		return false;
	}