"服务MeasurementBrokerService正在使用"在我的申请过程中显示

时间:2015-12-17 14:15:45

标签: android service google-play-services

我遇到了一个问题,GooglePlayServices应用程序正在使用我的应用程序进程进行服务,并且还显示进程数为2。
我附上了截图。我不知道为什么会这样。
与我的应用程序进程相比,它占用的内存更多。


有人可以帮我解决这个问题。

enter image description here


在此处显示两个流程 enter image description here

7 个答案:

答案 0 :(得分:2)

我在将gcm添加到我的应用后,今天遇到了这个问题,并且无法弄清楚这个MeasurementBrokerService究竟是什么用途。 我发现的唯一一件事是评论:

"我也有了它并且猜测它与通知监听器有关,因为看起来预防macrodroid的通知访问使它停止。 (希望我清楚,我的英语只剩下上学时间......)"

来自here

答案 1 :(得分:2)

我们也看到过这项服务。该问题原来是使用Google Analytics和NotificationListenerService。

由于某些原因,这两件事并没有很好地结合在一起,导致MeasurementBrokerService始终在运行,并且消耗了大量的内存。

我们的解决方案是删除Google Analytics以获取其他分析解决方案。

答案 2 :(得分:2)

仍然检查此主题以获得答案的人,我找到了一个解决方案并在以下位置发布了答案:

what is Google Play services MeasurementBrokerService and how to stop it?

我检查过谷歌AppMeasurement服务仍然在我的设备上运行。

我采用了以下方法:

以下内容阻止了firebase的数据收集。

https://firebase.google.com/support/guides/disable-analytics告诉我们以下方法

<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />

仅此一项仍无法阻止appMeasurement初始化。

已解决的第二步是将以下内容添加到应用程序级别gradle文件中:

configurations {
    all*.exclude group: 'com.google.firebase', module: 'firebase-core'
}

这基本上删除了firebase分析使用的所有代码。

如果它仍然不起作用,请确保gradle不包含广泛的播放服务依赖性

例如:compile

'com.google.android.gms:play-services-location:10.0.1'

而不是

'com.google.android.gms:play-services:10.0.1'

最糟糕的情况,我没有对此进行测试,因为以上解决了它是:

https://developers.google.com/analytics/devguides/collection/android/v4/advanced

如果没有开发人员的许可,谷歌应该停止放置不需要的东西。希望这有助于某人

答案 3 :(得分:2)

在gradle文件中排除firebase-core库。我遇到了同样的问题。

configurations {
all*.exclude group: 'com.google.firebase', module: 'firebase-core'

}

有关firebase库的更多详细信息,请访问以下链接

http://blog.safedk.com/technology/mobile-sdks-firebase-or-play-services/

答案 4 :(得分:0)

这可能与您在应用中的Google Analytics集成有关。从Java代码,项目级别和应用程序级别gradle文件中删除Google Analytics引用。此泄漏仅发生在最新的Google Analytics版本中。您可以集成旧版Google Play服务版本,例如7.3.0,但没有此问题可以修复此漏洞。

答案 5 :(得分:0)

我可以通过将Gradle版本从2.3.2设置为2.0.0来解决问题。因此我必须将Gradle wraper从3.3设置为2.14.1。

我也回到了buildToolsVersion&#39; 23.0.1&#39;来自buildToolsVersion&#39; 25.0.2&#39;。

通过编译这样的项目,可能在构建环境中进行了很多更改,因为当我将所有内容更改回原始版本时,问题就消失了,没有MeasurementBrokerService再次运行。

答案 6 :(得分:0)

我找到的解决方案是将NotificationListenerService移动到它自己的process。将Google Play服务放在另一个上。

<强>背景

首先,将NotificationListenerService分开是一个很好的决定,因为在用户授予BIND_NOTIFICATION_LISTENER_SERVICE权限后,这个事情会不断运行。

除非另有声明,否则您的应用程序将使用一个进程。这意味着在&#34;运行服务&#34;选项卡除了NotificationListenerService中存储的所有通知数据外,您还将看到GC尚未收集的所有垃圾。

如何

要在其自己的流程中运行服务,您需要在android:process

中添加Manifest.xml属性
<service android:name="com.mypackage.services.NotificationService"
android:label="@string/app_name"
android:process=":myawesomeprocess"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">

要记住的事情

您无法以常规方式在流程之间进行通信!您无法从驻留在其自身进程中的服务访问另一个类。 唯一的解决方案是使用广播

//Send
Intent intent = new Intent("com.mypackage.myaction");
context.sendBroadcast(intent);

//Receive
registerReceiver(broadcastReceiver, new IntentFilter("com.mypackage.myaction"));

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action!=null&&action.equals("com.mypackage.myaction")) {
            //
        }
    }
};

//Don't forget to unregister
unregisterReceiver(broadcastReceiver);

请确保使用context而非LocalBroadcastManager,因为它不能使用流程。