Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e0f315f authored by Chilun's avatar Chilun
Browse files

Use post-execution state for ActivityResultItem

onActivityResult was called before onStart when resuming an activity
from STOPPED state.

Ensure the onActivityResult callback to be called before onResume.
But we only fix this after Android S to avoid some app compatibility
issues.

Bug: 78294732
Bug: 130178098
Test: atest ActivityLifecycleTests
Change-Id: I9ff060ff26d3fc517aae0a094fc041887326a963
parent abdb320b
Loading
Loading
Loading
Loading
+16 −3
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@


package android.app.servertransaction;
package android.app.servertransaction;


import static android.app.servertransaction.ActivityLifecycleItem.ON_RESUME;
import static android.app.servertransaction.ActivityLifecycleItem.UNDEFINED;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;


import android.annotation.NonNull;
import android.annotation.NonNull;
@@ -23,6 +25,9 @@ import android.annotation.Nullable;
import android.app.ActivityThread.ActivityClientRecord;
import android.app.ActivityThread.ActivityClientRecord;
import android.app.ClientTransactionHandler;
import android.app.ClientTransactionHandler;
import android.app.ResultInfo;
import android.app.ResultInfo;
import android.app.compat.CompatChanges;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledAfter;
import android.compat.annotation.UnsupportedAppUsage;
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcel;
@@ -41,11 +46,19 @@ public class ActivityResultItem extends ActivityTransactionItem {
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    private List<ResultInfo> mResultInfoList;
    private List<ResultInfo> mResultInfoList;


    /* TODO(b/78294732)
    /**
     * Correct the lifecycle of activity result after {@link android.os.Build.VERSION_CODES#S} to
     * guarantee that an activity gets activity result just before resume.
     */
    @ChangeId
    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.S)
    public static final long CALL_ACTIVITY_RESULT_BEFORE_RESUME = 78294732L;

    @Override
    @Override
    public int getPostExecutionState() {
    public int getPostExecutionState() {
        return ON_RESUME;
        return CompatChanges.isChangeEnabled(CALL_ACTIVITY_RESULT_BEFORE_RESUME)
    }*/
                ? ON_RESUME : UNDEFINED;
    }


    @Override
    @Override
    public void execute(ClientTransactionHandler client, ActivityClientRecord r,
    public void execute(ClientTransactionHandler client, ActivityClientRecord r,