0

我有一个场景,用户可以单击后退按钮访问上一个活动执行其他任何操作,活动将自行结束(例如来电,单击电源按钮,切换应用程序......)。这些调用必须将不同的结果返回给前一个活动(用 调用startActivityForResult),根据将要采取的行动,它要么是优雅的退出,要么是混乱的......

现在,当 Android 调用时onBackPressed,它也总是会调用onStop,但不是相反。所以我希望我的应用程序在我打电话onBackPressed而不打电话时完成,在里面onStop打电话是行不通的。finish()onBackPressed

一些代码来说明我的问题:

@Override
public void onStop() {
    // this gets called no matter what, I don't like that
    Log.i(TAG, "Canceled");
    setResult(RESULT_CANCELED, new Intent());
    finish();
    super.onStop();
}

@Override
public void onBackPressed() {
    Log.i(TAG, "User ended activity");
    setResult(RESULT_OK, new Intent());
    finish();
    super.onBackPressed();
}
4

1 回答 1

2

如果您不想setResult()在应用关闭时重复调用,请使用Activity.isFinsihing()

@Override
public void onStop() {
    // Now this is only called if Activity is not finishing already
    if(!isFinishing()) {
        Log.i(TAG, "Canceled");
        setResult(RESULT_CANCELED, new Intent());
        finish();
    }
    super.onStop();
}
于 2012-09-02T15:57:23.850 回答