我正在设计一个应用程序,它根据之前调用的活动的返回值调用多个子活动之一。例如,活动A可能导致B或C,B可能再次导致A,B或D。
显而易见的方法是让子活动设置一个值,指示要调用的下一个子活动,然后将其传递回父级,然后在父级的onActivityReturn
方法中调用另一个子活动{{ 1}}基于该值。我假设startActivityForResult
是异步的,因此startActivityForResult
方法在子活动返回之前会或者至少可以继续(并完成)。
这一定安全吗?如果被调用的活动在调用它的onActivityReturn
完成之前返回,会发生什么?
答案 0 :(得分:0)
如果您的流量受适当条件控制,则不会产生任何问题, 即使是更安全的一面,您的流程允许您通过定义
来创建单个实例android:launchMode="singleInstance"
答案 1 :(得分:0)
你也可以在发送给父母之前完成(销毁)任何孩子
你也可以:
android:launchMode="singleInstance"
答案 2 :(得分:0)
实际上,如果没有可以接受您意图的应用程序,您应该预测情况,因此如果没有此类应用程序,您的应用程序将崩溃。看一下这个例子:
// Actions for change cover button
Button setImageButton = (Button) rootView.findViewById(R.id.set_image_button);
setImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
ComponentName activity = photoPickerIntent.resolveActivity(getActivity().getPackageManager());
photoPickerIntent.setType("image/*");
if (activity != null) {
startActivityForResult(photoPickerIntent, SELECT_PHOTO);
} else {
Toast.makeText(getActivity().getBaseContext(), "There are no activities for such intent",
Toast.LENGTH_SHORT).show();
}
}
});
所以借助于 ComponentName activity = photoPickerIntent.resolveActivity(getActivity()。getPackageManager()); 你可以检查一切正常。