diff options
Diffstat (limited to 'services/core/java/com/android/server/am/ConnectionRecord.java')
-rw-r--r-- | services/core/java/com/android/server/am/ConnectionRecord.java | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ConnectionRecord.java b/services/core/java/com/android/server/am/ConnectionRecord.java new file mode 100644 index 0000000..423e540 --- /dev/null +++ b/services/core/java/com/android/server/am/ConnectionRecord.java @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.am; + +import android.app.IServiceConnection; +import android.app.PendingIntent; +import android.content.Context; + +import java.io.PrintWriter; + +/** + * Description of a single binding to a service. + */ +final class ConnectionRecord { + final AppBindRecord binding; // The application/service binding. + final ActivityRecord activity; // If non-null, the owning activity. + final IServiceConnection conn; // The client connection. + final int flags; // Binding options. + final int clientLabel; // String resource labeling this client. + final PendingIntent clientIntent; // How to launch the client. + String stringName; // Caching of toString. + boolean serviceDead; // Well is it? + + void dump(PrintWriter pw, String prefix) { + pw.println(prefix + "binding=" + binding); + if (activity != null) { + pw.println(prefix + "activity=" + activity); + } + pw.println(prefix + "conn=" + conn.asBinder() + + " flags=0x" + Integer.toHexString(flags)); + } + + ConnectionRecord(AppBindRecord _binding, ActivityRecord _activity, + IServiceConnection _conn, int _flags, + int _clientLabel, PendingIntent _clientIntent) { + binding = _binding; + activity = _activity; + conn = _conn; + flags = _flags; + clientLabel = _clientLabel; + clientIntent = _clientIntent; + } + + 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_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("ACT "); + } + 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(); + } +} |