diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataController.java | 19 |
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); |