OnActivityResult
方法在 Android 开发中已被弃用,主要是因为 Google 引入了新的 Activity Result API 来处理 Activity 之间的结果传递。新的 API 提供了更清晰、更灵活的方式来处理异步操作的结果。
Activity Result API 是一组新的接口和类,用于替代传统的 startActivityForResult
和 onActivityResult
方法。它通过使用 ActivityResultLauncher
和 ActivityResultContracts
来简化结果的传递和处理。
ActivityResultContracts
可以提供类型安全的结果处理。适用于需要从一个 Activity 启动另一个 Activity 并接收结果的场景,例如图片选择、权限请求等。
import android.content.Intent;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private ActivityResultLauncher<Intent> activityResultLauncher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == RESULT_OK) {
Intent data = result.getData();
// 处理结果
}
}
});
// 启动另一个 Activity
Intent intent = new Intent(this, AnotherActivity.class);
activityResultLauncher.launch(intent);
}
}
Android 官方文档 - Activity Result API
通过使用 Activity Result API,你可以更轻松地处理 Activity 之间的结果传递,并且代码更加简洁和易于维护。
领取专属 10元无门槛券
手把手带您无忧上云