我正在编写一个 Android 库,我想在其中跟踪用户启动应用程序时、进入后台时、变为活动时等事件。我想考虑关闭屏幕,就像应用程序进入后台一样。目前,我正在编写一个服务来实现它,它每隔几秒检查一次主活动状态。我真的不喜欢这种投票方式。是否可以在应用程序更改状态时从应用程序获取某种通知。需要明确的是,由于这是库,因此它无法访问应用程序的主要活动生命周期方法。我希望我的图书馆检测到应用程序可见性的变化。想知道是否有比粘性服务更好的方法来做到这一点?
提前致谢 !
我正在编写一个 Android 库,我想在其中跟踪用户启动应用程序时、进入后台时、变为活动时等事件。我想考虑关闭屏幕,就像应用程序进入后台一样。目前,我正在编写一个服务来实现它,它每隔几秒检查一次主活动状态。我真的不喜欢这种投票方式。是否可以在应用程序更改状态时从应用程序获取某种通知。需要明确的是,由于这是库,因此它无法访问应用程序的主要活动生命周期方法。我希望我的图书馆检测到应用程序可见性的变化。想知道是否有比粘性服务更好的方法来做到这一点?
提前致谢 !
实现此目的的方法之一是跟踪服务中的 logcat。您的后台服务可能正在监视 logcat 以查看应用程序启动事件和其他事件。
要以编程方式阅读日志,您可以执行以下操作
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
如果您愿意将自己限制在 API 级别 14+,您可以调用单例以通知其他对象中的这些活动生命周期事件registerActivityLifecycleCallbacks()
。Application
除此之外,没有您可以独立检测到的“应用程序更改状态时的通知”。