获取Activity栈,判断当前Activity位置的方法

需求

需要在整个app全局能够弹出弹框,接收到广播即进行处理。

但是,BaseActivity派生出N个Activity,BaseActivity中的广播就会执行N次,导致弹框重复添加,所有在广播中判定,只有在栈顶的Activity才能处理广播消息。

实现

获取任务栈

必须添加权限:

<!--获取Activity任务栈 权限-->
<uses-permission android:name="android.permission.GET_TASKS" />

具体实现,获取栈以及其中内容:

// 获取activity任务栈
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.RunningTaskInfo info = manager.getRunningTasks(1).get(0);

// 类名 .ui.mobile.activity.WebsiteLoginActivity
String shortClassName = info.topActivity.getShortClassName(); 

// 完整类名 com.haofang.testapp.ui.mobile.activity.WebsiteLoginActivity
String className = info.topActivity.getClassName(); 

// 包名 com.haofang.testapp
String packageName = info.topActivity.getPackageName();

当前Activity的包名和全名:

// 包名 com.haofang.testapp
BaseActivity.this.getPackageName()
// 类名 ui.main.MainActivity
BaseActivity.this.getLocalClassName()

之后进行对比,即可在非目标Activity避开处理

以上这篇获取Activity栈,判断当前Activity位置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android判断当前栈顶Activity的包名代码示例
  • android获取当前运行Activity名字的方法
  • Android获得当前正在显示的activity类名的方法
(0)

相关推荐

  • Android获得当前正在显示的activity类名的方法

    本文实例讲述了Android获得当前正在显示的activity类名的方法.分享给大家供大家参考.具体实现方法如下: 首先需要加一个权限: 复制代码 代码如下: <uses-permission android:name="android.permission.GET_TASKS"/> Java代码如下: 复制代码 代码如下: ActivityManager manager = (ActivityManager)   getSystemService(Context.ACTI

  • Android判断当前栈顶Activity的包名代码示例

    有时候,我们想做一个功能需求的时候,在网上找相关资料,总是找不到想要的,所以我就想到了用博客来记录和整理自己发现的新东西,话不多说,直接撸代码~ //判断当前是不是桌面 public static Boolean isHome(Context context) { String topPackageName = getTopActivityName(context); //此处做了判断如果得到的是null的话就返回一个true return topPackageName == null ? tr

  • android获取当前运行Activity名字的方法

    本文实例讲述了android获取当前运行Activity名字的方法,可以避免即时聊天再出现通知的情况.分享给大家供大家参考.具体方法如下: 最近在做IM时需要知道当前Activity是哪一个Activity.自己整理一下两种方法 第一种:要方便一点(Service中无法使用) 复制代码 代码如下: private String getRunningActivityName() {          String contextString = context.toString();       

  • 获取Activity栈,判断当前Activity位置的方法

    需求 需要在整个app全局能够弹出弹框,接收到广播即进行处理. 但是,BaseActivity派生出N个Activity,BaseActivity中的广播就会执行N次,导致弹框重复添加,所有在广播中判定,只有在栈顶的Activity才能处理广播消息. 实现 获取任务栈 必须添加权限: <!--获取Activity任务栈 权限--> <uses-permission android:name="android.permission.GET_TASKS" /> 具体

  • jQuery获取页面元素绝对与相对位置的方法

    本文实例讲述了jQuery获取页面元素绝对与相对位置的方法.分享给大家供大家参考.具体如下: 获取页面某一元素的绝对X,Y坐标,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 获取相对(父元素)位置: var X = $('#DivID').position().top; var Y = $('#DivID').position().left; var pleft = $("s

  • jQuery简单获取DIV和A标签元素位置的方法

    本文实例讲述了jQuery简单获取DIV和A标签元素位置的方法.分享给大家供大家参考,具体如下: 一.获取DIV的位置 var top = jquery("#div_id").offset().top; //获取div的居上位置 var left = jquery("#div_id").offset().left; //获取div的居左位置 var height = jquery("#div_id").height(); //获取div的高度 v

  • javascript获取网页各种高宽及位置的方法总结

    screen对象 获取屏幕的高宽(分辨率) screen.width //屏幕的宽 screen.height //屏幕的高 screen.availWidth //屏幕可用宽度 屏幕的像素高度减去系统部件高度之后的值 screen.availHeight //屏幕可用高度 屏幕的像素宽度减去系统部件宽度之后的值 window对象 获得窗口位置及大小 window.screenTop //窗口顶部距屏幕顶部的距离 window.screenLeft //窗口左侧距屏幕左侧的距离 window.i

  • 使用jQuery判断浏览器滚动条位置的方法

    项目背景 webtouch(webapp)页面,防苹果手机safari浏览器,网上滑动,底部导航消失,滑动到底部又出现.向下滑动,底部导航出现. 遇到问题 1.我一开始用swipeup和swipedown来做,发现因为有滚动条,不会触发.因此只能判断滚动条是上滚下滚等.关于手机手势,后面的文章会介绍,欢迎关注! 2.通过上滚下滚来让底部导航显示或者因此,安卓上面的浏览器都可以,但是苹果safari会一闪一闪,原因是苹果safari自动有个弹跳效果,导致事件重复执行,解决办法是给上滚下滚一个距离,

  • 获取元素距离浏览器周边的位置的方法getBoundingClientRect

    复制代码 代码如下: var box = document.getElementById( "gaga1" ); /* alert( box.getBoundingClientRect().top ); alert( box.getBoundingClientRect().right ); alert( box.getBoundingClientRect().bottom ); alert( box.getBoundingClientRect().left ) */ function

  • android判断一个Activity是否处于栈顶的实例

    实际开发中我们需要很多情况需要判断某个activity是否位于栈顶,也许会给新的小伙伴带来困扰,那么直接上代码吧,也没几行 /** * * 判断某activity是否处于栈顶 * @return true在栈顶 false不在栈顶 */ private boolean isActivityTop(Class cls,Context context){ ActivityManager manager = (ActivityManager) context.getSystemService(Cont

  • Android 判断某个Activity 是否在前台运行的实例

    如下所示: /** * 判断某个界面是否在前台 * * @param context Context * @param className 界面的类名 * @return 是否在前台显示 */ public static boolean isForeground(Context context, String className) { if (context == null || TextUtils.isEmpty(className)) return false; ActivityManage

  • Activity isFinishing()判断Activity的状态实例

    在Activity中调用finish()或按返回键退出时,若有资源被其他对象引用不能释放(如context被某个单例对象引用或正在线程中被使用),则activity不会被调用onDestory()方法. isFinishing() 可用来判断Activity是否处于活跃状态(false)还是等待回收状态(true). isDestroyed() 根据源码注释可知,只有onDestroy()方法被调用后它才返回true,因此实际用处不大. 查看源代码中的注释: /** * Check to see

  • python如何获取apk的packagename和activity

    这篇文章主要介绍了python如何获取apk的packagename和activity,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 实现代码如下: # 找出packagename和activity import os import re class packagename_activity: def get_packagename(self, path): aapt = [] os.system(f'aapt dump badging {pa

随机推荐