android - 是否有一个应用程序级的进入和退出点可以用来跟踪我的 Android 应用程序运行的累积时间?
问题描述
我的任务是记录我们的 Android 应用程序在设备上运行的确切时间,包括前台和后台的所有时间。
我想我会在 中设置一个开始时间SharedPreferences
,然后根据它进行计算。我认为我会覆盖该onDestroy()
方法并计算正常运行时间并将该数据存储在其中SharedPreferences
。
然后我记得我们的应用程序中有几个活动,如果一个活动的onDestroy()
方法被调用,我们的其他活动仍然可以运行。
我开始寻找可以使用的应用程序级别onCreate()
,onDestroy()
但我没有成功;我的第一反应是说“没有”。
那么,是否有一个应用程序级别的入口和出口点可以用来跟踪我们的应用程序运行的累积时间、前台和后台?
谢谢!
解决方案
我认为你在正确的轨道上。我建议使用 BaseAvtivity 类,并让您的所有活动扩展该类。这样 Baseactivity 的 onDestroy 总是被调用。按照您在问题中描述的方式在 BaseActivity 中执行您的时间管理逻辑。另一个建议是使用您自己的 Application 类。
static class ActivityLifecycle implements ActivityLifecycleCallbacks {
Activity currentActivity;
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
}
@Override
public void onActivityStarted(Activity activity) {
currentActivity = activity;
}
@Override
public void onActivityResumed(Activity activity) {
currentActivity = activity;
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
这样,您可以使用应用程序生命周期方法来计算在应用程序中花费的时间。
推荐阅读
- python - 有没有办法递归地只删除空子目录?
- c# - 将对象限制为几种类型
- scala - 封装在 Future 中的非阻塞 IO 请求和阻塞 IO 请求在性能上有什么区别吗?
- regex - 我想使用正则表达式将上一行获取到匹配的字符串
- xamarin - 单击导航栏中的搜索栏图标以使用 xamarin 表单激活导航栏中的搜索栏
- c# - 我必须使用什么驱动程序才能在 Edge Chromium 浏览器上的 c# 中运行 selenium 测试?
- ios - iOS 13 - 崩溃的 avPlayer.currentTime().seconds 检查
- pandas - 在数据框/csv 文件顶部写入行(将一组列表合并到数据框)
- shell - 在 Jenkins 管道脚本中将 shell 变量添加到文件路径
- sql - Visual Studio 中的 SQL 结果问题