Android service 判断前台activity

如何在service中判断当前前台运行的是哪个Activity(如果当前应用在前台的话)?

0

3个回答

一般的话,都会自己建立一个activity的管理栈,所有activity都继承BaseActivity, Base中管理入栈出栈,当前前台运行的activity 就是栈顶的那个咯

0

楼上已经说出了思路了,我这里直接给你帖段代码

 public class ActivityController 
{
    public static List<Activity> mActivityList = new ArrayList<Activity>();  
    private static Activity mCurrentActivity;  

    public static void addActivity(Activity activity) {  
        mActivityList.add(activity);  
    }  
public static void removeActivity(Activity activity) {  
        mActivityList.remove(activity);  
    }  

    public static void setCurrentActivity(Activity activity) {  
        mCurrentActivity = activity;  
    }  

    public static Activity getCurrentActivity() {  
        return mCurrentActivity;  
    }  
    public static void finishAll() {  
        for (Activity activity : mActivityList) {  
            if (!activity.isFinishing()) {  
                activity.finish();  
            }  
        }  
    }  

}

基类在做相应处理就行,然后要获取当前前台Actitivy直接获取mCurrentActivity就行

1
        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        String activity = am.getRunningTasks(1).get(0).topActivity.getClassName();

0
stone_you
stone_you 回复BackFirej20: 我在24上面还是可用的,只是不建议你用了,未来可能会去掉。或者你试试这个am.getAppTasks().get(0).getTaskInfo().topActivity.getClassName()
2 年多之前 回复
BackFirej20
BackFirej20 这个方法已经不可用了。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android判断服务是否开启,activity是否在前台运行
nimport android.app.ActivityManager;nimport android.content.ComponentName;nimport android.content.Context;nimport android.text.TextUtils;nimport java.util.ArrayList;nimport java.util.List;nnpublic cla...
Android开发,后台service与前台activity通信
android开发,在处理耗时操作的时候,不能再UI(主线程)中处理,有些人为了方便,直接在activity中new 一个新的线程来处理耗时任务,虽然可以达到目的,但是线程不好控制,使用不当可能会导致严重的性能问题。那么如何处理这些耗时的操作呢。rn其实android里面的四大组件里面的Service就可以很好的解决这一问题,service和activity差不多,只不过activity是运行在前
判断Activity是否在前台显示
/**n * 返回当前的应用是否处于前台显示状态n * @param packageNamen * @returnn */n private boolean isTopActivity(String packageName ,Context context) {n //_context是一个保存的上下文n ActivityManag
小技巧--获取当前前台显示Activity
系统提供的有ActivityManager,可供我们用来获取当前系统栈中正在运行的线程,并访问系统的Activity栈
如何判断Activity是否在前台显示
转发请备注原文地址:https://www.niwoxuexi.com/blog/android00/article/223.htmlrnrn我们在Android开发过程中,经常会判断Activity是否在前台显示,来处理某些状态,这里谢了一个静态方法,供大家参考。rnrn方法一:用ActivityManager管理的Activity栈来操作rnpublic class CommonUtil{n
android activity工具:判断activity是否在前台显示
public class ActivityUtils {nn /**n * 判断某个界面是否在前台n *n * @param activity 要判断的Activityn * @return 是否在前台显示n */n public static boolean isForeground(Activity activity) {n ...
Android 判断某个Activity 是否在前台运行
/**n * 判断某个界面是否在前台n *n * @param context Contextn * @param className 界面的类名n * @return 是否在前台显示n */n public static boolean isForeground(Context context, String className) {n
记录一次android前台服务demo的使用过程
什么是前台服务前台服务是那些被认为用户知道(用户认可所认可)且在系统内存不足的时候不允许系统杀死的服务。前台服务必须给状态栏提供一个通知,它被放到正在运行(Ongoing)标题之下——这就意味着通知只有在这个服务被终止或从前台主动移除通知后才能被解除1.正式使用使用notification在service的onStartCommand的方法中 //实例化通知栏构造器Notificat...
Android判断应用是否正在前台运行&Activity是否正在前台运行
原理:Application可以监听到应用中所有Activity的生命周期nnActivity的生命周期监听
利用Activity生命周期变化判断Activity是否处于前台
1. Activity生命周期及对应表现 onCreate Activity第一次创建n onStart Activity可见n onResume Activity进入前台栈顶n onPause Activity不处于前台栈顶(被结束,或者有新界面压入)n onStop Activity不可见(若上层界面是透明对话框,对话框下的界面是不会进入onStop的)n onDestroy Activ
判断进程是否存在、Activity是否在前台显示
1、判断进程是否存在 n2、判断activity是否正在前台显示
如何判断android activity是否运行
rn如何判断android activity是否运行rn rnandroid对于我们来说是一个复杂的且拥有多种逻辑类别的系统。这对于我们来说是一件好事但是也给我们带来处理一个相同问题会带来更多的复杂性。接下来我们会检查activity是否在你的应用中存在rn rn介绍rn我们会需要一个持续运行的服务,这个服务会从远程站点获取信息或者做类似事情来给我们带来一些特殊利益。在当时我这个服务获取到一些信息...
【Android】判断应用Application、Activity、Service是否处于活动状态
通过ActivityManager我们可以获得系统里正在运行的activities,包括进程(Process)等、应用程序/包、服务(Service)、任务(Task)信息。nnnn1、判断应用App是否活动nnnn/**n * 判断应用是否已经启动n * @param context 一个contextn * @param packageName 要判断应用的包名n * @return bool
Android感知当前App应用处于前台(可见)或后台(不可见)简洁规范的解决方案
Android感知当前App应用处于前台(可见)或后台(不可见)简洁规范的解决方案判断当前App是否处于前台(可见)或后台(不可见)附录1是一种解决方案。然而不够简洁,也是在过去一段时间比较稳定的解决方案。现在谷歌官方推出了LifecycleObserver和与Android生命周期相关的Lifecycle维护和管理方案,那么现在判断App处于前台和后台的解决就简洁多了,如代码:package z...
Android构建前台服务,以及PendingIntent返回到当前活动的解决办法
刚开始编写的时候在处理PendingIntent时,就是简单的让所打开的intent回到活动,但是后来发现这样实际上只是新建了一个相同的活动覆盖住了正在进行的活动上,就像写的音乐播放器,在后台的时候若我点击通知栏里的前台服务,会打开了一个新的音乐播放器活动覆盖在正在播放音乐的活动的音乐上面,并不是把后台正在进行的音乐活动调出来。最后解决方法如下:rn在AndroidManifest.xml中修改当
Android 服务之startService和bindService以及前台服务的创建
android服务一般用来做一些,后台操作,数据处理。比较常用。 nandroid服务包括前台服务和后台服务. n前台服务一般用来做音乐的后台播放,可以在通知栏显示。 n前台服务的创建:public class ForegroundService extends Service {@Overriden public void onCreate() {n private Notif
优雅的使用ActivityLifecycleCallbacks管理Activity和区分App前后台
一、ActivityLifecycleCallbacks接口介绍API 14之后,在Application类中,提供了一个应用生命周期回调的注册方法,用来对应用的生命周期进行集中管理,这个接口叫registerActivityLifecycleCallbacks,可以通过它注册自己的ActivityLifeCycleCallback,每一个Activity的生命周期都会回调到这里的对应方法。之前我们
Android笔记(一):Activity绑定Service,并访问通信
Service有两种启动和关闭方式,一种是startService()、stopService(),这种方式Service无法和访问者通信、数据交换,另一个种是bindService()、unbindService()可以和访问者通信、数据交换。 n1、Service端public class FirstService extends Service{n private int count;
设置Service为前台服务,保证service不会被杀死!!
本篇博客主要介绍如何设置service为前台服务,保证service不会再一段时间之后被系统杀死!!
利用activity生命周期的特点来 判断app是从后台进入前台的还是重新打开app的
nn由上面的生命周期可以得到一个结论就是页面a到b   或者b返回a 始终最后显示的页面的onstart 都先于 前面的页面onstop页面执行.nn那么我们可以这样做:  在Application的onCreate中调用下面方法nnnprivate int activityCount = 0;nprivate long firstTime = 0;nprivate long lastTime =...
android进程保活-前台server+像素保活
借鉴部分rn背景:从产品的角度来说,任何一个应用程序的PM都希望自己的应用程序在用户手机中的留存率高些些,之前我接触到的一个业务需求也是如此,要求提升应用程序在国内第三方厂商ROM中的存活率。rn如前篇所述踩坑篇,保活策略只在android原生系统中起作用,在国内第三方厂商ROM中是没有效果的。为了提高app在第三方ROM中的存活率,调研了一些方法,最终选择某移动社交应用的1像素保活方案,因为这个
Android 获取前台应用
关于调研获取设备是否处在 launcher界面结果如下:基本思路:获取到当前设备前台应用包名,再获取到当前设备launcher包名,然后进行比较确定是否处于launcher。一.针对获取前台应用的整体分析如下Android版本获取方式是否用户手动打开权限优点缺点4.x及以下版本getRunningTask()否系统api方式 稳定只能适用4.x及以下版本5.x版本读取proc/文件方式否无需用户打...
Android获取前台进程技术方案
Andoid系统从Android5.0开始对获取前台进程接口进行相关限制。本文为对突破Android接口限制进行的一系列研究的总结。目前所有获取前台进程的接口有如下7种方式:rnrnrnrn接下来将对每一种方案进行详细的阐述。rnrn1.   通过RunningTaskrnrn1.1.  实现原理rnrn当一个App处于前台的时候,会处于RunningTask的这个栈的栈顶,所以我们可以取出Run
判断App是否处于前台
方法一:nn //当前应用是否处于前台n private boolean isForeground(Context context) {n if (context != null) {n ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);...
Android退到后台与切到前台
最近开发了一款TV版app,主要功能是视频通话,所以要求机顶盒是一开机,就要把app打开,因为时刻有别人打过来。然后点击返回按钮,需要把app切到后台,但是app仍需要存活,需要收到消息。所以这里就设计到了app退到后台与切到前台的功能。nnapp退到后台nn1.一般情况下,是启动Home页就可以实现这个功能,代码如下nnnIntent intent = new Intent(Intent.ACT...
安卓开发观察者模式应用-一个service通知多个activity更新ui的实现
安卓开发观察者模式应用-一个service通知多个activity更新ui的实现, service与activity的交互: 1.接口回调 2.自定义广播 3.观察者模式
Android创建一个前台服务
在activity中启动服务rnIntent intent = new Intent(this, MyService.class);rnstartService(intent);rnrnrn新建一个服务类rnpublic class MyService extends Service{rn@Nullablern@Overridernpublic IBinder onBind(Intent inte
Android Service详解(八)---前台服务详解
Android Service详解(八)---前台服务详解nnn这是第八篇文章主要讲的是如何实现一个前台服务nn回顾可以到第一篇文章从头了解Service:nAndroidn Service详解(一)---概述和StartServicennnn一、首先我们要知道什么是前台服务nnn前台服务被认为是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。 前台
android 监听后台到前台的切换
6. 看看是不是又回到了原来的位置usb核心不限制只是在具体实现时采用了不同的算法,数据库服务器处理时间汽车.切比雪夫距离是由1致范数uniform norm或称为上确界范数所衍生的度量 code ul class="prenumbering" ,2.1 业务分析 mapreduce是1种模式现在也可以使用 EF Power tools将已经存在的数据库反向生成poco的class.rnrnrn 
Service与Activity之间通信的2种方式
一、前期基础知识储备(1)Service基础知识部分——参见笔者《Service精炼详解》,文章对于Service的简介、分类、实现、注意事项均有比较详细的说明;(2)为何要进行Secvice和Activity的通信?常用的服务一般是普通服务,即是不可交互的后台服务,该服务在活动中启动,但是启动之后,活动基本就和服务没有什么关系了。确实如此,我们在普通服务里是用startService()方法来启...
android如何判断应用是否在前台
方法一ActivityManager:nn通常情况下,我们判断app是否在前台都是通过 ActivityManager。nnn/**n * Activity是否在前台n * @param contextn * @returnn */n private boolean isOnForground(Context context){n ActivityManager activ...
Android判断栈顶activity;打印当前最顶层的activity类名;采用服务后台运行获取当前activity类名;
Android判断栈顶activity;打印当前最顶层的activity类名;采用服务后台运行获取当前activity类名;是一个demo App,使用Android studio工具打开,有需要的可以自行下载;
android 开机自启动:启动activity、service
android 开机自启动:启动activity、servicernrnrnrnrn开机自启动都是通过监听系统的一条开机广播实现的,自己写一个广播接收器(静态注册),而广播接收器是在系统加载后一定会被注册的,通过写的一个广播接收器接受这个广播,才能启动其他的组件,如activity/service。rnrnrnrnrn问题1:rnrn间接地启动activity是没有问题的,但是启动service:
Android Service的绑定和非绑定服务
Service介绍:Service是系统四大组件之一,它的后台运行并不是子线程,Service的运行是在主线程中进行的,只是它没有界面显示而已,它的耗时操作同样需要开启子线程,否者会跟Activity一样出现ANR。它不能在页面显示,只能在后台运行,可以与其他组件进行交互。Service的用途很广,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件...
android service 启动和关闭不在同一个Activity的问题
在android2.3版本上可以在一个的activity中直接stopService()关闭同一应用另外一个activity启动的service,但是把sdk换成4.0.3以上的版本,就会抛出异常,这是我问题的来源。
在Service中发送广播被kill掉的Activity能不能收到?
不能请看下面的实践:在发送广播前,Service会先打印消息,然后再发送广播,当Activity被kill掉后,Service会自动重启,然后继续发送广播,但是此时Activity都被kill了,是收不到广播的。当Activity重启之后能继续接受广播...
Android--获取前台当前APP
使用usagestatisticsAPI,这个API本来是系统用来统计app使用情况的,包含了每个app最近一次被使用的时间。我们只需要找出距离现在时间最短的那个app,就是当前在前台的app。nn类和方法nn类n 方法n 说明n UsageStaticsManagern –n app使用统计的管理者n –n queryUsageStats (int in...
android之判断服务是否再运行ActivityManager
/**n * Created by lambo on 2018/4/21.n * 判断服务是否 还在运行n * servicername:服务的名称n */nnpublic class ServicerIsrunningUtils extends Object {n public static boolean isrunning(Context context, String service...
深入理解Service(三)——前台服务和IntentService
在深入理解Service(一)——服务生命周期中解释了Service的生命周期,在深入理解Service(二)——绑定服务中解释了如何绑定服务,IPC机制,在本篇博客中将谈论服务的另两个常见用法:前台服务和IntentService。 在前台运行服务我们之前定义的服务都是运行在后台的,这样的服务当系统内存不足时将会被杀死,而用户却毫不知情。如果想要一个服务的状态可以被用户一眼看到,那么可以使用前台
Android 获取栈顶activity并在service 中弹出全局dialog解决方法
android 开发中,service 中需要弹出dialog 时候,无法获取到activity (service 的context 不是activity ),所以要获取栈顶的activity
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库课程设计有前台 数据库课程设计有前台