Android活动流

Android活动流,android,android-activity,Android,Android Activity,我有两个活动,比如A1和A2。序列为A1->A2 我从A1开始A2,但不调用A1中的finish()。 在我按下A2中的后退按钮后,我想触发A1中的一个功能。 但是,如果我在A1中使用onResume(),则即使在活动A1开始时也会触发该函数,我希望避免这种情况。 只能在A2的“后退”按下期间调用它。然后在A2活动内重写onBackPressed()方法 仅供参考:它适用于Android 2.x,否则您可以在Android 1.x中使用onKeyDown() 第二种方式: 使用startActi

我有两个活动,比如A1和A2。序列为A1->A2 我从A1开始A2,但不调用A1中的finish()。 在我按下A2中的后退按钮后,我想触发A1中的一个功能。 但是,如果我在A1中使用onResume(),则即使在活动A1开始时也会触发该函数,我希望避免这种情况。
只能在A2的“后退”按下期间调用它。

然后在A2活动内重写
onBackPressed()
方法

仅供参考:它适用于Android 2.x,否则您可以在Android 1.x中使用onKeyDown()

第二种方式:
使用startActivityForResult()在活动A1内启动A2活动。因此,当您按back键时,它会将您重定向到A1活动中的onActivityResult()。因此,在onActivityResult()中,您可以编写该代码。

我们从
startActivityForResult
开始A2,然后在

A1机具

  @Override
  public void onActivityResult(final int requestCode, int resultCode, final Intent data) {

   // your code here

}

在A2 override ONBACKPRESS中,在完成活动前按以设置结果。就这样

无论是第一次还是重新启动,onResume总是会被调用。通过重写
onRestart()

编辑1:

按照其他用户的建议使用startActivityForResult。

这里是另一种方法(一种是根据Dimitar)


但是触发的功能是重写onBackPressed(),设置标志是一种有效的可能性,但是startActivityForResult要好得多,因为还可以向意图中添加数据。
public class A extends Activity {
    public static boolean isCalledFromB = false;

    public void onCreate(Bundle instance) {
        isCalledFromB = false;
    }

    public void onResume()
    {
        if(isCalledFromB)
            dosomething();

    }

    public void dosomething() {

    }

}

public class B extends Activity {
..............

    public boolean onKeyDown(int keycode, KeyEvent event) {
        if (keycode == KeyEvent.KEYCODE_BACK) {
            A.isCalledFromB=true;
            finish();
        } 
        return true;
    }

}