Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >满足合规的关于“只在应用主进程”中做初始化操作的判断逻辑

满足合规的关于“只在应用主进程”中做初始化操作的判断逻辑

原创
作者头像
Junker
发布于 2022-02-18 05:34:52
发布于 2022-02-18 05:34:52
6640
举报
文章被收录于专栏:Android笔记Android笔记
代码语言:java
AI代码解释
复制
package com.tencent.qcloud.tim.demo;

import android.app.ActivityManager;
import android.content.Context;
import android.util.Log;

import java.util.List;

public class SessionWrapper {
    private static final String TAG = SessionWrapper.class.getSimpleName();

    public static boolean isMainProcess(Context context) {
        ActivityManager am = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE));
        String mainProcessName = context.getPackageName();
        int myPid = android.os.Process.myPid();

        List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
        if (processInfos == null) {
            Log.i(TAG, "isMainProcess get getRunningAppProcesses null");
            List<ActivityManager.RunningServiceInfo> processList = am.getRunningServices(Integer.MAX_VALUE);
            if (processList == null) {
                Log.i(TAG, "isMainProcess get getRunningServices null");
                return false;
            }
            for (ActivityManager.RunningServiceInfo rsi : processList) {
                if (rsi.pid == myPid && mainProcessName.equals(rsi.service.getPackageName())) {
                    return true;
                }
            }
            return false;
        }

        for (ActivityManager.RunningAppProcessInfo info : processInfos) {
            if (info.pid == myPid && mainProcessName.equals(info.processName)) {
                return true;
            }
        }
        return false;
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
android activitymanager 系统api_Android view
ActivityManager服务是对Activity管理、运行时功能管理和运行时数据结构的封装,进程(Process)、应用程序/包、服务(Service)、任务(Task)信息等。包括以下功能:
全栈程序员站长
2022/10/04
6360
android activitymanager 系统api_Android view
Android检测Activity或者Service是否运行
需求:假设我们的APP有3个页面AActivity,BActivity,CActivity,我们的APP需要一直运行在前台(特殊设备),要求实现一个监控服务,来监视APP是否运行,如果有3个页面都不运行了就说明这个APP已经挂掉了,否则说明APP在运行状态,不做处理,挂掉之后,我们需要重新启动App来让它继续处理运行状态,对外暴露一个来停止监控服务的广播,这样我们想停止监控服务时,发送一个广播即可。
程序员飞飞
2020/02/27
2.7K0
Android开发笔记(八十)运行状态检查
大家都知道刻舟求剑的寓言故事,说的是事物是发展变化着的,如果拘泥于原来的情况,那随着情况的改变,就不会得到预期的结果。同样,影响app运行的因素,并不只是外部环境(如硬件、系统、权限等等),还包括app自身的运行信息。如果app的运行状态发生了变化,那么原先处理正确的逻辑也可能处理失败,所以在特定的情况下,我们得对app的运行情况进行检查。
aqi00
2019/01/18
6780
看我一波,Android获取进程名函数,代码优化到极致的操作!
通过ActivityManager来获取进程名,网上也能搜索到很多人推荐这个用法。
Android技术干货分享
2020/10/21
2.5K0
看我一波,Android获取进程名函数,代码优化到极致的操作!
【Android 进程保活】应用进程拉活 ( 双进程守护 + JobScheduler 保活 | 成功率最高 | 推荐使用 )
【Android 进程保活】应用进程拉活 ( JobScheduler 拉活 | JobScheduler 使用流程 | JobService 服务 | 不同版本兼容 | 源码资源 ) 博客中介绍了 JobScheduler 的用法 ;
韩曙亮
2023/03/29
2.6K0
【Android 进程保活】应用进程拉活 ( 双进程守护 + JobScheduler 保活 | 成功率最高 | 推荐使用 )
基于android的_android studio创建activity
Android 如何判断一个应用在运行 在一个应用中,或一个Service 、Receiver中判断一个应用是否正在运行,以便进行一些相关的处理。 这个时候我们需要得到一个ActivityManager,这个Manager顾名思意就是管理Activity的,它有一个方法叫getRunningTasks,可以得到当前系统正在运行的Task的列表,代码如下: ActivityManager am = (ActivityManager)context.getSystemService(Context.
全栈程序员站长
2022/10/04
1K0
activity详解_activity教程
Activity可以获取运行中的应用信息,可以获取到servcie,process,app,memory,Task信息等。
全栈程序员站长
2022/10/04
1.3K0
android activitymanagerservice_安卓开发API
Android中Java层的ActivityManager类中封装了很多API,可以供我们查询当前系统的很多信息,包括:内存、进程(Process)、任务栈(Task)、服务(Service)等的相关信息。
全栈程序员站长
2022/10/04
5220
Android 获取进程名函数,如何优化到极致?
通过ActivityManager来获取进程名,网上也能搜索到很多人推荐这个用法。
字节流动
2020/09/29
5.1K0
利用无障碍服务(AccessibilityService)批量清理后台进程
Demo地址:https://github.com/qyxxjd/ClearProcesses
续写经典
2018/08/28
2K0
利用无障碍服务(AccessibilityService)批量清理后台进程
ActivityManager 管理Activity[通俗易懂]
参考:https://www.jianshu.com/p/063fae89206b https://blog.csdn.net/qq_38520096/article/details/82109948 https://blog.csdn.net/lanye11/article/details/52221359
全栈程序员站长
2022/10/04
7520
项目需求讨论- 手机锁屏及APP退到后台后自动锁定功能
大家好,又到了新一期的项目需求讨论,很多APP都有安全的意识,比如一些银行的APP,你登录后,看一些东西,然后这时候锁屏了。或者是按了Home键退到了后台,这时候,再启动这个App,可能就会又到了这个APP的解锁的界面。或者重新登录的界面。防止安全。
青蛙要fly
2018/08/29
9460
项目需求讨论- 手机锁屏及APP退到后台后自动锁定功能
032android初级篇之Timer的使用及获取栈顶包名
android 5.0 之后官方屏蔽了获取栈顶信息的api,如下的方法在大多数机器上可用:
上善若水.夏
2018/09/28
6610
Android 点击通知栏消息打开activity,并判断app是否运行
android的通知栏消息点击事件如果是打开一个activity时,我们要考虑两种情况:
程思扬
2022/01/10
3.7K0
Android ActivityManager
ActivityManager虽然名为Activity管理器,其实际功能比类名描述的广泛,定义的方法涵盖了内存、进程、任务、设备等相关功能。因此,将ActivityManager理解为AppManager,更符合这个类。
大公爵
2022/11/02
7190
【Android】如何知道某个Activity是否在前台?
转载自zrong's blog 有一个Android应用包含包含一个后台程序,该程序会定期连接服务器来实现自定义信息的推送。但是,当这个应用处于前台的时候,后台程序就没有必要连接服务器了。这样可以节省网络资源,也更省电。 用什么方法知道该应用是否处于前台呢? 网上搜到的方法大多数都是使用下面的代码: ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); //获得task列表 List<ActivityM
Gavin-ZYX
2018/05/18
1.7K0
如何编写基于Android的AccessibilityService的自动打卡
第一节 缘由与准备  最近有时间空闲,闲来无事,想到使用钉钉打卡有时会迟到,所以周末的时候去看了相关网上资料,做了个demo。 材料:定时器,AccessibilityService 加工方案:使用定时器在签到签退期间内自启,通过AccessibilityService模拟点击:分为签到与签退两种情况。 签到正常流程:工作-》考勤打卡-》(判断是否弹出窗口-是:我知道了否跳过)-》签到。 签到迟到流程:工作-》考勤打卡-》迟到打卡。 签退正常流程:工作-》考勤打卡-》签退。 工艺难点:签到页中嵌套的是基于W
用户1148881
2018/01/17
6.8K1
如何编写基于Android的AccessibilityService的自动打卡
Android 必知必会 - 根据包名判断 App 运行状态
对于没有 Service 的 App,程序一旦切换到后台,可能很快就被回收了,这里使用 ActivityManager.getRunningTasks(int maxNum) 方法来获取当前正在运行的任务,注意:此方法并不被系统推荐,且是一个 Deprecated 的方法。
他叫自己MR.张
2019/07/01
2.6K0
安卓学习之-ActivityManager
获取方法 ActivityManager mActivityManager (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
全栈程序员站长
2022/10/04
6640
推荐阅读
相关推荐
android activitymanager 系统api_Android view
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档