For help in tracking down memory use issues, seeing how long a connection has been held that is keeping other processes around. Let's call this for issue #6577613: Unbelievably sluggish nexus-S Change-Id: Ia3d016c5ed9d2155eea18ec884047e1e1d8a0ad5
95 lines
2.8 KiB
Java
95 lines
2.8 KiB
Java
/*
|
|
* Copyright (C) 2012 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.os.Binder;
|
|
import android.os.SystemClock;
|
|
import android.util.TimeUtils;
|
|
|
|
/**
|
|
* Represents a link between a content provider and client.
|
|
*/
|
|
public class ContentProviderConnection extends Binder {
|
|
public final ContentProviderRecord provider;
|
|
public final ProcessRecord client;
|
|
public final long createTime;
|
|
public int stableCount;
|
|
public int unstableCount;
|
|
// The client of this connection is currently waiting for the provider to appear.
|
|
// Protected by the provider lock.
|
|
public boolean waiting;
|
|
// The provider of this connection is now dead.
|
|
public boolean dead;
|
|
|
|
// For debugging.
|
|
public int numStableIncs;
|
|
public int numUnstableIncs;
|
|
|
|
public ContentProviderConnection(ContentProviderRecord _provider, ProcessRecord _client) {
|
|
provider = _provider;
|
|
client = _client;
|
|
createTime = SystemClock.elapsedRealtime();
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuilder sb = new StringBuilder(128);
|
|
sb.append("ContentProviderConnection{");
|
|
toShortString(sb);
|
|
sb.append('}');
|
|
return sb.toString();
|
|
}
|
|
|
|
public String toShortString() {
|
|
StringBuilder sb = new StringBuilder(128);
|
|
toShortString(sb);
|
|
return sb.toString();
|
|
}
|
|
|
|
public String toClientString() {
|
|
StringBuilder sb = new StringBuilder(128);
|
|
toClientString(sb);
|
|
return sb.toString();
|
|
}
|
|
|
|
public void toShortString(StringBuilder sb) {
|
|
sb.append(provider.toShortString());
|
|
sb.append("->");
|
|
toClientString(sb);
|
|
}
|
|
|
|
public void toClientString(StringBuilder sb) {
|
|
sb.append(client.toShortString());
|
|
sb.append(" s");
|
|
sb.append(stableCount);
|
|
sb.append("/");
|
|
sb.append(numStableIncs);
|
|
sb.append(" u");
|
|
sb.append(unstableCount);
|
|
sb.append("/");
|
|
sb.append(numUnstableIncs);
|
|
if (waiting) {
|
|
sb.append(" WAITING");
|
|
}
|
|
if (dead) {
|
|
sb.append(" DEAD");
|
|
}
|
|
long nowReal = SystemClock.elapsedRealtime();
|
|
sb.append(" ");
|
|
TimeUtils.formatDuration(nowReal-createTime, sb);
|
|
}
|
|
}
|