首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

检测Android应用启动关闭

我们先来看一个简单的例子,一个应用只有一个activity并且不支持全屏,这个activity的onStartonStop方法就决定了这个应用是打开的还是关闭的。...论应用如何启动 到目前为止,我们知道了如何检测应用是什么时候被打开或者关闭的,但是我们还不知道应用是如何被打开的。...在这段代码中,我在application类中添加了一个枚举类型变量用来记录应用是如何被打开的。这个建立在上一个例子的基础之上,所以我们打印一下日志,来看看应用是什么时候被打开的如何被打开的。...所以下一步就是在用户通过链接或通知打开应用的时候设置启动方式。如果不是上述两个方式,则说明用户是直接打开应用的。...现在你不仅可以检测应用什么时候启动或关闭的,还可以检测出它是如何启动的。 最后,再次感谢翻译人员以及原作者

3.2K30

Android应用实现安装后自启动的方法

网上大多数方法一样,使用广播手段: ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程序不能接收到这个广播) ACTION_PACKAGE_REPLACED...这样做是为了阻止发送自后台service的广播不小心启动某个已停止应用的组件。...(可看做实现安装后自启动) 此时退出App,并在设置-应用中把app进行【强制停止】。覆盖安装后,app没有自动运行。...(此时在设置-应用中查看,app处于stop状态) 所以,只要在App运行时,直接覆盖安装apk,是可以用广播接收器实现安装完后自启动的。..."/ </intent-filter </receiver </application 以上这篇Android应用实现安装后自启动的方法就是小编分享给大家的全部内容了,希望能给大家一个参考

4.1K31
您找到你想要的搜索结果了吗?
是的
没有找到

Android 启动过程】Android 应用启动流程 | Activity 启动流程

文章目录 一、Android 系统启动流程 二、Activity 启动流程 一、Android 系统启动流程 ---- 打开 Android 手机电源键后 , 先运行 BootLoader , 然后使用...进程 会启动 Launcher 应用 ; Launcher 应用就是界面中显示各个应用图标的应用 , 就是 Android 的桌面应用 ; Framework 层有 2 个最重要的进程 , Zygote...进程 SystemServer 进程 ; Zygote 进程通过 fork() 创建应用进程 ; 整理成如下框图 : 二、Activity 启动流程 ---- Android 应用启动方式有...2 种 , 分为冷启动启动 ; 冷启动 : 后台没有应用进程 , 需要先创建进程 , 然后启动 Activity ; 热启动 : 后台有应用进程 , 不创建进程 , 直接启动 Activity ;...Activity 启动一般分为 3 个阶段 , 以 Activity A 中启动 Activity B 为例 : 阶段 1 : Activity A 请求 Android System Service

3.9K10

Android 逆向】Android 进程简介 ( Android 应用启动流程 )

文章目录 前言 一、Android 进程 二、Android 应用启动流程 前言 参考 【Android 逆向】Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_adj...| maps | smaps | mem | task | environ ) 博客 , /proc/ 目录中存放的是所有进程相关信息 ; 一、Android 进程 ---- Android 操作系统中运行程序...与 进程 的对应关系是 一对多的关系 , 一个应用可能有多个进程 ; 一个进程 只可能对应 一个应用 ; 二、Android 应用启动流程 ---- Android 中的 ActivityManagerService...就是用于管理应用进程的 ; 用户点击应用图标 , 请求 ActivityManagerService 启动某个应用 , ActivityManagerService 会向 Zygote 发出创建应用的请求..., 应用进程实际上是有 Zygote 创建的 ; zygote 也是进程 ;

55010

Android 性能优化】应用启动优化 ( 启动白屏问题 | 应用启动时间测量 | 冷启动 | 热启动 | 应用启动时间计算源码分析 )

问题描述 : Android 应用启动时 , 尤其是大型复杂的应用 , 经常出现几秒钟的白屏或黑屏 , 黑屏或白屏取决于主界面 Activity 的主题风格 ; 2 ....解决方案 : Android 应用启动时很多大型应用都会有一个几秒的倒计时 , 并配上动态广告 , 这并不是开发者想要放上去的 , 而是为了避免上述启动白屏导致用户体很差 ; 3 ....通过 Logcat 日志查看应用启动时间 通过 Logcat 日志查看应用启动时间 : 该方法只适用于 Android 4.4 版本之后的手机 ; ① 使用工具 : 使用 Android Studio...热启动 : 按下 Home 键 , 应用进入后台 , 再次启动 , 应用由后台转到前台 , 这种启动称为热启动 ; 下图中的 LanuchState 中显示了启动的模式 , 下图中显示的是热启动 ;...Android 应用 Activity 界面 , 其中 am 命令是由 Am.java 程序编译出来的 , 其路径是 \frameworks\base\cmds\am\src\com\android\

5.1K20

Android源码分析--应用程序启动

应用程序的启动,又可称为根Activity的启动。但是在讲应用程序启动之前,我们有必要对应用程序进程(AppProcess)启动有所了解,那是因为启动一个应用程序首先要保证该应用程序的进程已经被启动。...应用程序进程(AppProcess)启动 启动大纲 AMS发送启动应用程序进程请求. Zygote接收请求并创建应用程序进程....3.进程创建完成后,交由ZygoteInit的 zygoteInit方法RuntimeInit的 applicationInit方法分别进行进程应用的初始化。...6.在ActivityStackSupervisor的 realStartActivityLocked方法中,对启动应用程序进程进行一系列的判断处理,最终会调用IBinder类型的ApplicationThread...---- 应用程序启动的进程关系图 应用程序启动的过程中,主要涉及了Launcher进程、SystemServer进程、Zygote进程应用程序进程这四个进程,它们之间的关系如下。

55720

Android12 应用启动流程分析

最近因为一些需求,需要梳理 Android 应用启动链路,从中寻找一些稳定的锚点来实现一些特殊的功能。本文即为对应用启动全过程的一次代码分析记录。...注: 本文所分析的代码基于 AOSP android_12.0.0_r14 前言 之前的文章介绍过 Android 操作系统的启动流程,从 init 进程开始,一直到 zygote system_server...的 APP)的身份启动应用,也是个隐藏接口,主要用于 resolver chooser Activity; 这些接口的实现都上面代码类似,即最终都会调用到 Instrumentation 的接口...,执行 Trace,以及异常处理; startActivityInner: 启动 Activity,并更新全局的 task 栈帧信息; 在 Android 中系统维护了所有应用的状态信息,因此用户才可以在不同应用中无缝切换返回...(); 安装 ContentProvider; 调用 app.onCreate(); 因此如果我们想要自己的程序在应用启动初期就执行,可以将代码写在 Application.onCraete 回调中;如果想要更早可以在

1.2K20

Android:创建可穿戴应用安装依赖管理

安装可穿戴应用 在开发时,你能够像一般移动应用一样直接把应用安装到可穿戴设备中。 使用adb install或者 Android Studio上的Play button。...当你准备好要公布时,你须要把可穿戴应用嵌入一个手机应用中。当用户从Google Play安装手机应用时,一个连接好的可穿戴设备将自己主动接收这个可穿戴应用。...注意:自己主动安装仅仅工作于APP使用了公布密钥(Release Key)进行签名。而不是调试密钥(Debug Key)。...通知(Notifications) Android v4支持库(或v13,包括了v4)包括了用于扩展手机应用支持可穿戴设备之间的通知。...可穿戴数据层(Wearable Data Layer) 要通过可穿戴式数据层APIs来同步发送设备手持设备之间的数据。你须要最新版本号的Google Play服务。

36720

tfcenter的安装启动

文章系列 tfcenter的安装启动 tfcenter开启端口映射功能 tfcenter开启本地文件功能 tfcenter开启Webdav文件服务 tfcenter开启http代理功能 tfcenter...,实现远程访问内网 本地文件管理:随时访问本地磁盘文件,并进行收藏分享;也可在线播放图片视频 Webdav文件服务:可以通过访问C盘、D盘的方式远程访问家里电脑,不再担心磁盘空间不够 代理服务:可以在可以在外网随时通过代理访问内部服务器或者代理上网...(支持http代理socks5代理) 其中,本地文件管理、Webdav文件服务代理服务均可以通过端口映射进行公网访问内网 下载安装包(绿色免安装) tfcenter安装包 https://share.weiyun.com...支持的操作系统: Windows、Linux树莓派系统 已验证的系统: windows10 x64 centos7 x64 ubuntu18 x64 raspberrypi x64x32系统 2....2.2. linux(centos、ubunturaspberrypi)使用方法 (1)执行 nohup .

1.7K30

Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )

文章目录 一、Zygote 进程孵化器 二、应用启动概述 dex 解密时 , 需要将 代理 Application 替换为 真实 Application ; 替换 Application 首先要理解系统如何注册应用的...Application 的 ; 一、Zygote 进程孵化器 ---- Zygote 进程孵化器 : Android 中的所有的进程 , 如 系统进程 , 应用进程 , SystemServer 进程..., 都是由 Zygote 调用 fork 方法创建的 ; SystemServer 进程 : Android 手机开机后 , 就会启动 Zygote 进程 , 并且创建 SystemServer 进程..., 其主要功能是 控制四大组件启动调度工作 , 控制 应用程序的管理调度工作 ; 二、应用启动概述 ---- Android 启动流程涉及的源码 : /frameworks/base/core/java...系统主界面 ) 中点击应用图标 , Launcher 应用启动该 app ; Launcher 应用通过 Instrumentation 经过一系列调用 , 获取 ActivityManagerService

27200

Android 插件化】VirtualApp 源码分析 ( 启动应用源码分析 | HomePresenterImpl 启动应用方法 | VirtualCore 启动插件应用最终方法 )

文章目录 一、启动应用源码分析 1、HomeActivity 启动应用点击方法 2、HomePresenterImpl 启动应用方法 3、VirtualCore 启动插件应用最终方法 一、启动应用源码分析...---- 1、HomeActivity 启动应用点击方法 在 io.virtualapp.home.HomeActivity 页面中 , 点击列表中的应用后 , 可以启动应用 ; 直接到 io.virtualapp.home.adapters.LaunchpadAdapter...mAppClickListener.onAppClick(position, data); } }); } } 2、HomePresenterImpl 启动应用方法...上述两个位置打印出来的日志如下 : I/HSL: PackageAppData : PackageAppData{packageName='kim.hsl.svg', name='SVG', icon=android.graphics.drawable.BitmapDrawable...@8d312bf, fastOpen=false, isFirstOpen=false, isLoading=false} 3、VirtualCore 启动插件应用最终方法 最终启动应用的方法是 io.virtualapp.home.LoadingActivity

60510

teg kafka安装启动

> tar -xzf kafka_2.12-2.3.0.tgz > cd kafka_2.12-2.3.0 Step 2: 启动服务 运行kafka需要使用Zookeeper,所以你需要先启动Zookeeper...我们已经运行了zookeeper刚才的一个kafka节点,所有我们只需要在启动2个新的kafka节点。...在启动过程中,你会看到一些日志消息,包括一些连接器实例化的说明。...Step 8: 使用Kafka Stream来处理数据 Kafka Stream是kafka的客户端库,用于实时流处理分析存储在kafka broker的数据,这个快速入门示例将演示如何运行一个流应用程序...file-input.txt 接下来,使用控制台的producer 将输入的数据发送到指定的topic(streams-file-input)中,(在实践中,stream数据可能会持续流入,其中kafka的应用启动并运行

62330

Android 允许其他应用启动您的Activity

允许其他应用启动您的Activity 前言 正文 一、创建项目 二、添加文件类型 三、只打开指定文件类型 四、获取文件的路径 五、文件写入 六、源码 前言   看标题你可能不知道是什么意思,我说一个场景你大概就明白了...一、创建项目   还是以前一样创建项目开始,这么做是为了让看的人了解每一步的经过,有的人喜欢看源码,有的人喜欢看过程思路。...你可以试试看将文件放到微信上去,看看能不能通过其他应用打开。 很明显,是不行的,那么怎么让你的应用能够支持打开这个文件呢?...二、添加文件类型   添加可打开文件类型,这里我们需要在非启动Activity中配置,我们刚才创建的项目里面自带了一个MainActivity,我们启动程序时就会打开这个Activity。...然后在自己的应用目录下创建文件,通过微信文件的输入流当前应用文件的输出流,将数据从输入流写到输出流,这里还有一个write()函数,代码如下: private fun write(inputStream

1K50

Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )

tag) 方法分析 三、 Android 应用进程分析 上一篇博客 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用简介 | Launcher 应用源码简介...应用启动普通 Android 应用的源码 ; 一、 Launcher 应用 startActivitySafely 方法分析 ---- 在 Launcher 应用中 , 点击快捷方式图标 , 调用...Launcher 中的启动方法 : Launcher 应用启动 Android 应用 , 调用 startActivity(View v, Intent intent, Object tag) 方法..., 在该方法中 , 启动 Android 应用启动 Activity ; 3 ...., opts.toBundle()) startActivity(intent) 启动安卓应用界面 ; ( 该 startActivity(intent) 方法就是我们经常调用的启动界面的方法 )

92410

Android应用进程启动过程(前篇)

前言 在此前我讲过Android系统的启动流程,系统启动后,我们就比较关心应用程序是如何启动的,这一篇我们来一起学习Android7.0 应用程序进程启动过程,需要注意的是“应用程序进程启动过程”,而不是应用程序启动过程...当然,在应用程序创建过程中除了获取虚拟机实例,还可以获得Binder线程池消息循环,这样运行在应用进程中应用程序就可以方便的使用Binder进行进程间通信以及消息处理机制了。...关于Binder线程池消息循环是如何启动或者创建的会在下一篇文章给出答案。先给出应用程序进程启动过程的时序图,然后对每一个步骤进行详细分析,如下图所示。 ?...在注释4处调用Process的start函数,将此前得到的应用程序进程用户ID用户组ID传进去,第一个参数entryPoint我们得知是"android.app.ActivityThread",后文会再次提到它...注释2处用来预加载类资源。注释3处用来启动SystemServer进程,这样系统的关键服务也会由SystemServer进程启动起来。

1K80

Android应用启动流量自动化测试

背景 之前《Tcpdump流量自动化测试上篇》、《Tcpdump流量自动化测试下篇》这两篇文章里讨论了如何通过tcpdump命令行工具来实现Android应用的流量自动化采集分析,今天再来跟大家分享一下如何针对应用启动场景来做流量测试...方案 今天还是会借着启动流量自动化测试脚本来顺带讲解其中涉及的Linux命令,所以头图依旧没变 网上也有很多关于流量自动化测试的文章,但很多比较陈旧,都是基于Android4.3机器做的测试,最新版本的系统在读取流量的目录上发生了一些变化...,所以在此解释一下,在 Android 4.3 以前,系统是通过读取 /proc/uid_stat/{uid} 文件来获取流量数据的,但在 Android 4.3 之后,就被 /proc/net/xt_qtaguid...awk '{print $8}' | sed -n '1p') echo "初始时接收的流量: $startrx bytes" echo "初始时发送的流量: $starttx bytes" # 启动应用...let "data=($endrx+$endtx)-($startrx+$starttx)" let "count=$3-$counter+1" echo "应用启动消耗的流量第 $count 次测试结果

1.1K20

Android 应用启动性能 | 延迟初始化

为了通过应用启动库加载 WorkManager,我先在应用的 build.gradle 文件中添加了应用启动库: // 查看最新的版本号 https://developer.android.google.cn...时间就是一切 我做了几次测试 (使用的是我在 测试应用启动性能 文章中提到的计时方法) 来比较几种不同的启动应用初始化库的方法。...延迟初始化 WorkManager 应用启动库。...需要注意的是: 加载这个库的常规方式 (使用 content provider) 使用的时间使用应用启动库的 (1315 – 1244 = 71 ms) 差不多。...(值得注意的是: 您需要保证在应用开始依赖相关库的功能之前,确保初始化它们。) 最后,尽情享受性能测试优化。我会继续找寻更多分析优化应用的性能办法,如果发现什么有价值的东西我会发布相关的内容。

62420
领券