【发布时间】:2022-12-11 16:11:54
【问题描述】:
我的应用程序包含 3 个不同的活动:HomeActivity、VideoActivity、ImageActivity 等。
主页包含几个启动视频和图像的按钮。
我需要记录有关活动在前台持续多长时间的指标。例如,假设用户打开视频,播放 10 秒,返回主页,打开图片 5 秒,转到主页,打开另一张图片 10 秒。
我想记录类似的东西
<ActivityName, ElapsedTime>
VideoActivity: 10s
HomePage: 1s
ImageActivity: 5s
HomePage: 2s
ImageActivity: 10s
我不必将 ActivityName 和 ElapsedTime 存储在 sharedPreferences 或任何东西中。一旦计算出 ElapsedTime,我正在使用内部 api 将数据发送到后端。
这就是我目前拥有的:
public class HomeActivity : AppCompatActivity() {
@Inject
lateinit val someBackend: SomeBackend
var startTime: Long = 0L
override fun onCreate(Bundle savedInstanceState) {
....
}
// When activity comes into foreground
override fun onResume() {
super.onResume()
startTime = System.currentTimeMillis();
}
//when activity loses focus
override fun onPause() {
super.onPause()
elapsedTime = System.currentTimeMillis() - startTime
someBackend.record("HomeActivity", elapsedTime)
}
}
public class VideoActivity : AppCompatActivity() {
@Inject
lateinit val someBackend: SomeBackend
var startTime: Long = 0L
override fun onCreate(Bundle savedInstanceState) {
....
}
// When activity comes into foreground
override fun onResume() {
super.onResume()
startTime = System.currentTimeMillis();
}
//when activity loses focus
override fun onPause() {
super.onPause()
elapsedTime = System.currentTimeMillis() - startTime
someBackend.record("VideoActivity", elapsedTime)
}
}
public class ImageActivity : AppCompatActivity() {
@Inject
lateinit val someBackend: SomeBackend
var startTime: Long = 0L
override fun onCreate(Bundle savedInstanceState) {
....
}
// When activity comes into foreground
override fun onResume() {
super.onResume()
startTime = System.currentTimeMillis();
}
//when activity loses focus
override fun onPause() {
super.onPause()
elapsedTime = System.currentTimeMillis() - startTime
someBackend.record("ImageActivity", elapsedTime)
}
}
这个实现看起来很简单,我担心我可能在这里遗漏了一些东西...... 有没有这不考虑的情况? 有比这更好的方法吗?
(如果相关)这是针对在设备上运行的演示应用程序。因此 HomeActivity 将一直运行,除非用户中断。 家庭活动可以持续 2 天或 2 个月....
【问题讨论】:
-
这几乎就是你想要的。计算就是这么简单。
标签: java android kotlin android-activity