gpt4 book ai didi

android - Activity 被终止时与 OnActivityResult() 的行为不一致

转载 作者:行者123 更新时间:2023-11-29 02:10:08 27 4
gpt4 key购买 nike

我遇到了 Android 生命周期方面的问题。据我所知,文档中没有涵盖这一点。

我有 Activity A,它使用 startActivityForResult 启动 Activity B。

public class ActivityA extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


Button b = (Button)findViewById(R.id.btnStart);
b.setOnClickListener(new OnClickListener(){

public void onClick(View v) {

startActivityForResult(new Intent(ActivityA.this, ActivityB.class), 0);

}});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.e("ActivityA", "onResult");
}
}

Activity B 调用图库 Activity :

public class ActivityB extends Activity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.e("ActivityB", "onResult");
setResult(0, data);
finish();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button)findViewById(R.id.btnStart);
TextView v = (TextView)findViewById(R.id.helloText);
v.setText("Activity B");
b.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, 0);

}});
}
}

当 Activity A 和 B 保留在内存中时,结果会按预期从 Activity 堆栈中弹出。

问题是图库 Activity 会消耗足够的资源,从而将 Activity A 和 Activity B 推出内存。 Android 杀死进程。当图库 Activity 返回结果时,将再次创建 Activity A 和 B,并调用 Activity B 的 onActivityResult。但是,这次当 ActivityB 调用 finish() 时,新创建的 ActivityA 的 onActivityResult 没有被调用。

我做错了什么吗?
这是一个错误吗?
这是预期的 Android 行为吗?

谢谢!

最佳答案

这不是错误。 Activity 2 第二次启动时,它不是由 Activity A 启动的。当 Activity B 被终止时,您需要在 onStoponPauseonDestroy 方法,然后在 Activity 重新启动时使用该状态。使用该信息,您仍然可以在 Activity B 退出时将适当的信息传回 Activity A。

关于android - Activity 被终止时与 OnActivityResult() 的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7959693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com