Merge "Hold a strong reference to the callback in TextClassifierService" into qt-qpr1-dev
am: 8247b5f5a6
Change-Id: I8591d0ac8025589679e9462e82c7bbcf4ea8ea63
This commit is contained in:
@@ -51,7 +51,6 @@ import android.view.textclassifier.TextSelection;
|
|||||||
|
|
||||||
import com.android.internal.util.Preconditions;
|
import com.android.internal.util.Preconditions;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
@@ -431,23 +430,18 @@ public abstract class TextClassifierService extends Service {
|
|||||||
* Forwards the callback result to a wrapped binder callback.
|
* Forwards the callback result to a wrapped binder callback.
|
||||||
*/
|
*/
|
||||||
private static final class ProxyCallback<T extends Parcelable> implements Callback<T> {
|
private static final class ProxyCallback<T extends Parcelable> implements Callback<T> {
|
||||||
private WeakReference<ITextClassifierCallback> mTextClassifierCallback;
|
private ITextClassifierCallback mTextClassifierCallback;
|
||||||
|
|
||||||
private ProxyCallback(ITextClassifierCallback textClassifierCallback) {
|
private ProxyCallback(ITextClassifierCallback textClassifierCallback) {
|
||||||
mTextClassifierCallback =
|
mTextClassifierCallback = Preconditions.checkNotNull(textClassifierCallback);
|
||||||
new WeakReference<>(Preconditions.checkNotNull(textClassifierCallback));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(T result) {
|
public void onSuccess(T result) {
|
||||||
ITextClassifierCallback callback = mTextClassifierCallback.get();
|
|
||||||
if (callback == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
Bundle bundle = new Bundle(1);
|
Bundle bundle = new Bundle(1);
|
||||||
bundle.putParcelable(KEY_RESULT, result);
|
bundle.putParcelable(KEY_RESULT, result);
|
||||||
callback.onSuccess(bundle);
|
mTextClassifierCallback.onSuccess(bundle);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Slog.d(LOG_TAG, "Error calling callback");
|
Slog.d(LOG_TAG, "Error calling callback");
|
||||||
}
|
}
|
||||||
@@ -455,12 +449,8 @@ public abstract class TextClassifierService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(CharSequence error) {
|
public void onFailure(CharSequence error) {
|
||||||
ITextClassifierCallback callback = mTextClassifierCallback.get();
|
|
||||||
if (callback == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
callback.onFailure();
|
mTextClassifierCallback.onFailure();
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Slog.d(LOG_TAG, "Error calling callback");
|
Slog.d(LOG_TAG, "Error calling callback");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -999,6 +999,7 @@ public final class SelectionActionModeHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onTimeOut() {
|
private void onTimeOut() {
|
||||||
|
Log.d(LOG_TAG, "Timeout in TextClassificationAsyncTask");
|
||||||
if (getStatus() == Status.RUNNING) {
|
if (getStatus() == Status.RUNNING) {
|
||||||
onPostExecute(mTimeOutResultSupplier.get());
|
onPostExecute(mTimeOutResultSupplier.get());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user