下面列出了android.content.Context#BIND_TREAT_LIKE_ACTIVITY 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
boolean unbindServiceLocked(IServiceConnection connection) {
IBinder binder = connection.asBinder();
if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "unbindService: conn=" + binder);
ArrayList<ConnectionRecord> clist = mServiceConnections.get(binder);
if (clist == null) {
Slog.w(TAG, "Unbind failed: could not find connection for "
+ connection.asBinder());
return false;
}
final long origId = Binder.clearCallingIdentity();
try {
while (clist.size() > 0) {
ConnectionRecord r = clist.get(0);
removeConnectionLocked(r, null, null);
if (clist.size() > 0 && clist.get(0) == r) {
// In case it didn't get removed above, do it now.
Slog.wtf(TAG, "Connection " + r + " not removed for binder " + binder);
clist.remove(0);
}
if (r.binding.service.app != null) {
if (r.binding.service.app.whitelistManager) {
updateWhitelistManagerLocked(r.binding.service.app);
}
// This could have made the service less important.
if ((r.flags&Context.BIND_TREAT_LIKE_ACTIVITY) != 0) {
r.binding.service.app.treatLikeActivity = true;
mAm.updateLruProcessLocked(r.binding.service.app,
r.binding.service.app.hasClientActivities
|| r.binding.service.app.treatLikeActivity, null);
}
mAm.updateOomAdjLocked(r.binding.service.app, false);
}
}
mAm.updateOomAdjLocked();
} finally {
Binder.restoreCallingIdentity(origId);
}
return true;
}
public String toString() {
if (stringName != null) {
return stringName;
}
StringBuilder sb = new StringBuilder(128);
sb.append("ConnectionRecord{");
sb.append(Integer.toHexString(System.identityHashCode(this)));
sb.append(" u");
sb.append(binding.client.userId);
sb.append(' ');
if ((flags&Context.BIND_AUTO_CREATE) != 0) {
sb.append("CR ");
}
if ((flags&Context.BIND_DEBUG_UNBIND) != 0) {
sb.append("DBG ");
}
if ((flags&Context.BIND_NOT_FOREGROUND) != 0) {
sb.append("!FG ");
}
if ((flags&Context.BIND_IMPORTANT_BACKGROUND) != 0) {
sb.append("IMPB ");
}
if ((flags&Context.BIND_ABOVE_CLIENT) != 0) {
sb.append("ABCLT ");
}
if ((flags&Context.BIND_ALLOW_OOM_MANAGEMENT) != 0) {
sb.append("OOM ");
}
if ((flags&Context.BIND_WAIVE_PRIORITY) != 0) {
sb.append("WPRI ");
}
if ((flags&Context.BIND_IMPORTANT) != 0) {
sb.append("IMP ");
}
if ((flags&Context.BIND_ADJUST_WITH_ACTIVITY) != 0) {
sb.append("WACT ");
}
if ((flags&Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE) != 0) {
sb.append("FGSA ");
}
if ((flags&Context.BIND_FOREGROUND_SERVICE) != 0) {
sb.append("FGS ");
}
if ((flags&Context.BIND_TREAT_LIKE_ACTIVITY) != 0) {
sb.append("LACT ");
}
if ((flags&Context.BIND_VISIBLE) != 0) {
sb.append("VIS ");
}
if ((flags&Context.BIND_SHOWING_UI) != 0) {
sb.append("UI ");
}
if ((flags&Context.BIND_NOT_VISIBLE) != 0) {
sb.append("!VIS ");
}
if (serviceDead) {
sb.append("DEAD ");
}
sb.append(binding.service.shortName);
sb.append(":@");
sb.append(Integer.toHexString(System.identityHashCode(conn.asBinder())));
sb.append('}');
return stringName = sb.toString();
}