summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataController.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataController.java
index ac9d807ad9ce..f2dfe05899e7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataController.java
@@ -63,13 +63,19 @@ public class MobileDataController {
mStatsService = INetworkStatsService.Stub.asInterface(
ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
mPolicyManager = NetworkPolicyManager.from(mContext);
+ }
- try {
- mSession = mStatsService.openSession();
- } catch (RemoteException e) {
- Log.w(TAG, "Failed to open stats session");
- mSession = null;
+ private INetworkStatsSession getSession() {
+ if (mSession == null) {
+ try {
+ mSession = mStatsService.openSession();
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to open stats session", e);
+ } catch (RuntimeException e) {
+ Log.w(TAG, "Failed to open stats session", e);
+ }
}
+ return mSession;
}
public void setCallback(Callback callback) {
@@ -86,7 +92,8 @@ public class MobileDataController {
if (subscriberId == null) {
return warn("no subscriber id");
}
- if (mSession == null) {
+ final INetworkStatsSession session = getSession();
+ if (session == null) {
return warn("no stats session");
}
final NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriberId);