Loading core/java/android/app/ActivityThread.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -2557,8 +2557,8 @@ public final class ActivityThread extends ClientTransactionHandler { + " req=" + requestCode + " res=" + resultCode + " data=" + data); + " req=" + requestCode + " res=" + resultCode + " data=" + data); ArrayList<ResultInfo> list = new ArrayList<ResultInfo>(); ArrayList<ResultInfo> list = new ArrayList<ResultInfo>(); list.add(new ResultInfo(id, requestCode, resultCode, data)); list.add(new ResultInfo(id, requestCode, resultCode, data)); final ClientTransaction clientTransaction = new ClientTransaction(mAppThread, token); final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, token); clientTransaction.addCallback(new ActivityResultItem(list)); clientTransaction.addCallback(ActivityResultItem.obtain(list)); try { try { mAppThread.scheduleTransaction(clientTransaction); mAppThread.scheduleTransaction(clientTransaction); } catch (RemoteException e) { } catch (RemoteException e) { Loading core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java +27 −6 Original line number Original line Diff line number Diff line Loading @@ -25,17 +25,15 @@ import android.os.IBinder; import android.os.Parcel; import android.os.Parcel; import android.os.Trace; import android.os.Trace; import java.util.Objects; /** /** * Activity configuration changed callback. * Activity configuration changed callback. * @hide * @hide */ */ public class ActivityConfigurationChangeItem extends ClientTransactionItem { public class ActivityConfigurationChangeItem extends ClientTransactionItem { private final Configuration mConfiguration; private Configuration mConfiguration; public ActivityConfigurationChangeItem(Configuration configuration) { mConfiguration = configuration; } @Override @Override public void execute(ClientTransactionHandler client, IBinder token, public void execute(ClientTransactionHandler client, IBinder token, Loading @@ -47,6 +45,29 @@ public class ActivityConfigurationChangeItem extends ClientTransactionItem { } } // ObjectPoolItem implementation private ActivityConfigurationChangeItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityConfigurationChangeItem obtain(Configuration config) { ActivityConfigurationChangeItem instance = ObjectPool.obtain(ActivityConfigurationChangeItem.class); if (instance == null) { instance = new ActivityConfigurationChangeItem(); } instance.mConfiguration = config; return instance; } @Override public void recycle() { mConfiguration = null; ObjectPool.recycle(this); } // Parcelable implementation // Parcelable implementation /** Write to Parcel. */ /** Write to Parcel. */ Loading Loading @@ -80,7 +101,7 @@ public class ActivityConfigurationChangeItem extends ClientTransactionItem { return false; return false; } } final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; return mConfiguration.equals(other.mConfiguration); return Objects.equals(mConfiguration, other.mConfiguration); } } @Override @Override Loading core/java/android/app/servertransaction/ActivityResultItem.java +25 −6 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcelable; import android.os.Trace; import android.os.Trace; import java.util.List; import java.util.List; import java.util.Objects; /** /** * Activity result delivery callback. * Activity result delivery callback. Loading @@ -34,11 +35,7 @@ import java.util.List; */ */ public class ActivityResultItem extends ClientTransactionItem { public class ActivityResultItem extends ClientTransactionItem { private final List<ResultInfo> mResultInfoList; private List<ResultInfo> mResultInfoList; public ActivityResultItem(List<ResultInfo> resultInfos) { mResultInfoList = resultInfos; } @Override @Override public int getPreExecutionState() { public int getPreExecutionState() { Loading @@ -54,6 +51,28 @@ public class ActivityResultItem extends ClientTransactionItem { } } // ObjectPoolItem implementation private ActivityResultItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityResultItem obtain(List<ResultInfo> resultInfoList) { ActivityResultItem instance = ObjectPool.obtain(ActivityResultItem.class); if (instance == null) { instance = new ActivityResultItem(); } instance.mResultInfoList = resultInfoList; return instance; } @Override public void recycle() { mResultInfoList = null; ObjectPool.recycle(this); } // Parcelable implementation // Parcelable implementation /** Write to Parcel. */ /** Write to Parcel. */ Loading Loading @@ -87,7 +106,7 @@ public class ActivityResultItem extends ClientTransactionItem { return false; return false; } } final ActivityResultItem other = (ActivityResultItem) o; final ActivityResultItem other = (ActivityResultItem) o; return mResultInfoList.equals(other.mResultInfoList); return Objects.equals(mResultInfoList, other.mResultInfoList); } } @Override @Override Loading core/java/android/app/servertransaction/BaseClientRequest.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -24,7 +24,7 @@ import android.os.IBinder; * Each of them can be prepared before scheduling and, eventually, executed. * Each of them can be prepared before scheduling and, eventually, executed. * @hide * @hide */ */ public interface BaseClientRequest { public interface BaseClientRequest extends ObjectPoolItem { /** /** * Prepare the client request before scheduling. * Prepare the client request before scheduling. Loading core/java/android/app/servertransaction/ClientTransaction.java +36 −6 Original line number Original line Diff line number Diff line Loading @@ -37,7 +37,7 @@ import java.util.Objects; * @see ActivityLifecycleItem * @see ActivityLifecycleItem * @hide * @hide */ */ public class ClientTransaction implements Parcelable { public class ClientTransaction implements Parcelable, ObjectPoolItem { /** A list of individual callbacks to a client. */ /** A list of individual callbacks to a client. */ private List<ClientTransactionItem> mActivityCallbacks; private List<ClientTransactionItem> mActivityCallbacks; Loading @@ -54,11 +54,6 @@ public class ClientTransaction implements Parcelable { /** Target client activity. Might be null if the entire transaction is targeting an app. */ /** Target client activity. Might be null if the entire transaction is targeting an app. */ private IBinder mActivityToken; private IBinder mActivityToken; public ClientTransaction(IApplicationThread client, IBinder activityToken) { mClient = client; mActivityToken = activityToken; } /** /** * Add a message to the end of the sequence of callbacks. * Add a message to the end of the sequence of callbacks. * @param activityCallback A single message that can contain a lifecycle request/callback. * @param activityCallback A single message that can contain a lifecycle request/callback. Loading Loading @@ -127,6 +122,41 @@ public class ClientTransaction implements Parcelable { } } // ObjectPoolItem implementation private ClientTransaction() {} /** Obtain an instance initialized with provided params. */ public static ClientTransaction obtain(IApplicationThread client, IBinder activityToken) { ClientTransaction instance = ObjectPool.obtain(ClientTransaction.class); if (instance == null) { instance = new ClientTransaction(); } instance.mClient = client; instance.mActivityToken = activityToken; return instance; } @Override public void recycle() { if (mActivityCallbacks != null) { int size = mActivityCallbacks.size(); for (int i = 0; i < size; i++) { mActivityCallbacks.get(i).recycle(); } mActivityCallbacks.clear(); } if (mLifecycleStateRequest != null) { mLifecycleStateRequest.recycle(); mLifecycleStateRequest = null; } mClient = null; mActivityToken = null; ObjectPool.recycle(this); } // Parcelable implementation // Parcelable implementation /** Write to Parcel. */ /** Write to Parcel. */ Loading Loading
core/java/android/app/ActivityThread.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -2557,8 +2557,8 @@ public final class ActivityThread extends ClientTransactionHandler { + " req=" + requestCode + " res=" + resultCode + " data=" + data); + " req=" + requestCode + " res=" + resultCode + " data=" + data); ArrayList<ResultInfo> list = new ArrayList<ResultInfo>(); ArrayList<ResultInfo> list = new ArrayList<ResultInfo>(); list.add(new ResultInfo(id, requestCode, resultCode, data)); list.add(new ResultInfo(id, requestCode, resultCode, data)); final ClientTransaction clientTransaction = new ClientTransaction(mAppThread, token); final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, token); clientTransaction.addCallback(new ActivityResultItem(list)); clientTransaction.addCallback(ActivityResultItem.obtain(list)); try { try { mAppThread.scheduleTransaction(clientTransaction); mAppThread.scheduleTransaction(clientTransaction); } catch (RemoteException e) { } catch (RemoteException e) { Loading
core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java +27 −6 Original line number Original line Diff line number Diff line Loading @@ -25,17 +25,15 @@ import android.os.IBinder; import android.os.Parcel; import android.os.Parcel; import android.os.Trace; import android.os.Trace; import java.util.Objects; /** /** * Activity configuration changed callback. * Activity configuration changed callback. * @hide * @hide */ */ public class ActivityConfigurationChangeItem extends ClientTransactionItem { public class ActivityConfigurationChangeItem extends ClientTransactionItem { private final Configuration mConfiguration; private Configuration mConfiguration; public ActivityConfigurationChangeItem(Configuration configuration) { mConfiguration = configuration; } @Override @Override public void execute(ClientTransactionHandler client, IBinder token, public void execute(ClientTransactionHandler client, IBinder token, Loading @@ -47,6 +45,29 @@ public class ActivityConfigurationChangeItem extends ClientTransactionItem { } } // ObjectPoolItem implementation private ActivityConfigurationChangeItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityConfigurationChangeItem obtain(Configuration config) { ActivityConfigurationChangeItem instance = ObjectPool.obtain(ActivityConfigurationChangeItem.class); if (instance == null) { instance = new ActivityConfigurationChangeItem(); } instance.mConfiguration = config; return instance; } @Override public void recycle() { mConfiguration = null; ObjectPool.recycle(this); } // Parcelable implementation // Parcelable implementation /** Write to Parcel. */ /** Write to Parcel. */ Loading Loading @@ -80,7 +101,7 @@ public class ActivityConfigurationChangeItem extends ClientTransactionItem { return false; return false; } } final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; return mConfiguration.equals(other.mConfiguration); return Objects.equals(mConfiguration, other.mConfiguration); } } @Override @Override Loading
core/java/android/app/servertransaction/ActivityResultItem.java +25 −6 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcelable; import android.os.Trace; import android.os.Trace; import java.util.List; import java.util.List; import java.util.Objects; /** /** * Activity result delivery callback. * Activity result delivery callback. Loading @@ -34,11 +35,7 @@ import java.util.List; */ */ public class ActivityResultItem extends ClientTransactionItem { public class ActivityResultItem extends ClientTransactionItem { private final List<ResultInfo> mResultInfoList; private List<ResultInfo> mResultInfoList; public ActivityResultItem(List<ResultInfo> resultInfos) { mResultInfoList = resultInfos; } @Override @Override public int getPreExecutionState() { public int getPreExecutionState() { Loading @@ -54,6 +51,28 @@ public class ActivityResultItem extends ClientTransactionItem { } } // ObjectPoolItem implementation private ActivityResultItem() {} /** Obtain an instance initialized with provided params. */ public static ActivityResultItem obtain(List<ResultInfo> resultInfoList) { ActivityResultItem instance = ObjectPool.obtain(ActivityResultItem.class); if (instance == null) { instance = new ActivityResultItem(); } instance.mResultInfoList = resultInfoList; return instance; } @Override public void recycle() { mResultInfoList = null; ObjectPool.recycle(this); } // Parcelable implementation // Parcelable implementation /** Write to Parcel. */ /** Write to Parcel. */ Loading Loading @@ -87,7 +106,7 @@ public class ActivityResultItem extends ClientTransactionItem { return false; return false; } } final ActivityResultItem other = (ActivityResultItem) o; final ActivityResultItem other = (ActivityResultItem) o; return mResultInfoList.equals(other.mResultInfoList); return Objects.equals(mResultInfoList, other.mResultInfoList); } } @Override @Override Loading
core/java/android/app/servertransaction/BaseClientRequest.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -24,7 +24,7 @@ import android.os.IBinder; * Each of them can be prepared before scheduling and, eventually, executed. * Each of them can be prepared before scheduling and, eventually, executed. * @hide * @hide */ */ public interface BaseClientRequest { public interface BaseClientRequest extends ObjectPoolItem { /** /** * Prepare the client request before scheduling. * Prepare the client request before scheduling. Loading
core/java/android/app/servertransaction/ClientTransaction.java +36 −6 Original line number Original line Diff line number Diff line Loading @@ -37,7 +37,7 @@ import java.util.Objects; * @see ActivityLifecycleItem * @see ActivityLifecycleItem * @hide * @hide */ */ public class ClientTransaction implements Parcelable { public class ClientTransaction implements Parcelable, ObjectPoolItem { /** A list of individual callbacks to a client. */ /** A list of individual callbacks to a client. */ private List<ClientTransactionItem> mActivityCallbacks; private List<ClientTransactionItem> mActivityCallbacks; Loading @@ -54,11 +54,6 @@ public class ClientTransaction implements Parcelable { /** Target client activity. Might be null if the entire transaction is targeting an app. */ /** Target client activity. Might be null if the entire transaction is targeting an app. */ private IBinder mActivityToken; private IBinder mActivityToken; public ClientTransaction(IApplicationThread client, IBinder activityToken) { mClient = client; mActivityToken = activityToken; } /** /** * Add a message to the end of the sequence of callbacks. * Add a message to the end of the sequence of callbacks. * @param activityCallback A single message that can contain a lifecycle request/callback. * @param activityCallback A single message that can contain a lifecycle request/callback. Loading Loading @@ -127,6 +122,41 @@ public class ClientTransaction implements Parcelable { } } // ObjectPoolItem implementation private ClientTransaction() {} /** Obtain an instance initialized with provided params. */ public static ClientTransaction obtain(IApplicationThread client, IBinder activityToken) { ClientTransaction instance = ObjectPool.obtain(ClientTransaction.class); if (instance == null) { instance = new ClientTransaction(); } instance.mClient = client; instance.mActivityToken = activityToken; return instance; } @Override public void recycle() { if (mActivityCallbacks != null) { int size = mActivityCallbacks.size(); for (int i = 0; i < size; i++) { mActivityCallbacks.get(i).recycle(); } mActivityCallbacks.clear(); } if (mLifecycleStateRequest != null) { mLifecycleStateRequest.recycle(); mLifecycleStateRequest = null; } mClient = null; mActivityToken = null; ObjectPool.recycle(this); } // Parcelable implementation // Parcelable implementation /** Write to Parcel. */ /** Write to Parcel. */ Loading