Android:每当特定应用进入前台时,从服务获取前台应用信息

时间:2017-03-13 08:17:37

标签: android performance android-permissions android-library intentservice

我一直在尝试编写一个库,我以后可以将其用于其他应用程序。问题是,

一旦我的应用程序(主应用程序)说我的库来监控它。每次应用程序(主应用程序)进入前台时,库都必须检查。并且每次都必须显示锁定屏幕。所有这些都必须在图书馆中处理。

我的方法:我尝试在意图服务中使用getRunningTasks来运行任务信息。但这种方法已经从棒棒糖中弃用了。 (我需要解决这个问题。)

注意:我不想每次任何应用程序进入前台时都要检查。如果有一种方法可以在我的应用程序进入前景时获得通知将是有帮助的(所有处理应该在库中进行,我的主应用程序将只是说监视或不监视,即它的布尔值)。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以注册Application.ActivityLifecycleCallbacks,每次发生此类事件时都会通知您。

何时何地注册回调而不触及应用模块?编写自定义的无操作内容提供商。默认情况下,内容提供程序仅在应用程序的主进程中运行,无论如何都应该是所有UI。

class MyInitProvider : ContentProvider() {
    override fun onCreate(): Boolean {
        val app = context.applicationContext as Application

        // Do what you need to do here.

        return false // Indicate the provider is not to be used further.
    }

    // All other abstract method implementations return either 0 or null.
}

在AndroidManifest.xml库中注册内容提供程序:

<application>
    <provider
        android:name=".MyInitProvider"
        android:authorities="${applicationId}.mylibraryinitprovider"
        android:exported="false"/>
</application>

详细了解内容提供商:https://developer.android.com/reference/android/content/ContentProvider.html

在主线程上调用回调。不要在那里做繁重的工作。