IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 冷启动耗时,时长统计 -> 正文阅读

[移动开发]Android 冷启动耗时,时长统计

背景:

在App的开发过程中,application是一个程序的入口,一般好多程序都是在这里初始化,抢占初始化最佳时机。由于很多初始化抢占时机会导致进程在初始化的时候特别耗时,这样会导致app的体验急剧下降。如何监控app冷起已成为一个热门话题。

冷起占用时间过长,会导致在体验等各方面都很不好。这时,我们需要统计哪些设备在冷起比较耗时。

冷起:又叫新进程创建,指当前app进行不在虚拟机内,需要创新创建。从创建和第一个页面的过程,叫冷起。

如何统计冷起:

1:我们只需要在application中进行即可。每个页面或者application在被加载到内存中都会回调

attachBaseContext(Context)。即当前已被添加成功。所以在application中,我们只需要在
attachBaseContext(Context)中记录一下启动时间,
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    starttime = System.currentTimeMillis();
}

2:监听第一个页面(action=Main)的入口页面,如何监听?其实我们可以通过

registerActivityLifecycleCallbacks()监听activity的生命周期回调来监听。

在application中注册一个生命周期回调,

public interface ActivityLifecycleCallbacks {
    void onActivityCreated(Activity activity, Bundle savedInstanceState);
    void onActivityStarted(Activity activity);
    void onActivityResumed(Activity activity);
    void onActivityPaused(Activity activity);
    void onActivityStopped(Activity activity);
    void onActivitySaveInstanceState(Activity activity, Bundle outState);
    void onActivityDestroyed(Activity activity);
}

我们根据自己的业务在指定的回调方法进行业务判断,接下来我们采用onActivityCreated()进行处理。如果你认为onActivityStarted()才算启动完成,也可以将代码添加在此处。

接下来处理tagActivity的启动模式,判断是否是入口页面

public static final String ACTON_MAIN = "android.intent.action.MAIN";

Set<String> set = activity.getIntent().getCategories();
//<category android:name="android.intent.category.LAUNCHER" />
String action = activity.getIntent().getAction();
//<action android:name="android.intent.action.MAIN"/>
if (TextUtils.equals(ACTON_MAIN, action)) {
    endTime = System.currentTimeMillis();
    long total = endTime - starttime;
}

如果当前action是android.intent.action.MAIN,代表是程序入口。我们只要统计一次即可。

通过时间做减法,即可得出冷启动的耗时。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:33:24  更:2021-12-04 13:35:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:46:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码