}
private void evaluateBinding(String scorerPackageName, boolean forceUnbind) {
- if (mPackagesToWatch.contains(scorerPackageName)) {
+ if (!mPackagesToWatch.contains(scorerPackageName)) {
+ // Early exit when we don't care about the package that has changed.
+ return;
+ }
+
+ if (DBG) {
+ Log.d(TAG, "Evaluating binding for: " + scorerPackageName
+ + ", forceUnbind=" + forceUnbind);
+ }
+ final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
+ if (activeScorer == null) {
+ // Package change has invalidated a scorer, this will also unbind any service
+ // connection.
+ if (DBG) Log.d(TAG, "No active scorers available.");
+ unbindFromScoringServiceIfNeeded();
+ } else if (activeScorer.packageName.equals(scorerPackageName)) {
+ // The active scoring service changed in some way.
if (DBG) {
- Log.d(TAG, "Evaluating binding for: " + scorerPackageName
- + ", forceUnbind=" + forceUnbind);
+ Log.d(TAG, "Possible change to the active scorer: "
+ + activeScorer.packageName);
}
- final NetworkScorerAppData activeScorer =
- mNetworkScorerAppManager.getActiveScorer();
- if (activeScorer == null) {
- // Package change has invalidated a scorer, this will also unbind any service
- // connection.
- if (DBG) Log.d(TAG, "No active scorers available.");
+ if (forceUnbind) {
unbindFromScoringServiceIfNeeded();
- } else if (activeScorer.packageName.equals(scorerPackageName)) {
- // The active scoring service changed in some way.
- if (DBG) {
- Log.d(TAG, "Possible change to the active scorer: "
- + activeScorer.packageName);
- }
- if (forceUnbind) {
- unbindFromScoringServiceIfNeeded();
- }
- bindToScoringServiceIfNeeded(activeScorer);
- } else {
- // One of the scoring apps on the device has changed and we may no longer be
- // bound to the correct scoring app. The logic in bindToScoringServiceIfNeeded()
- // will sort that out to leave us bound to the most recent active scorer.
- if (DBG) {
- Log.d(TAG, "Binding to " + activeScorer.packageName + " if needed.");
- }
- bindToScoringServiceIfNeeded(activeScorer);
}
+ bindToScoringServiceIfNeeded(activeScorer);
+ } else {
+ // One of the scoring apps on the device has changed and we may no longer be
+ // bound to the correct scoring app. The logic in bindToScoringServiceIfNeeded()
+ // will sort that out to leave us bound to the most recent active scorer.
+ if (DBG) {
+ Log.d(TAG, "Binding to " + activeScorer.packageName + " if needed.");
+ }
+ bindToScoringServiceIfNeeded(activeScorer);
}
}
}