告诉时,Android没有完成活动

时间:2012-09-02 15:54:05

标签: android

我有一个场景,用户可以点击后退按钮访问上一个活动做其他事情,活动将自行结束(例如来电,点击电源按钮,切换应用...)。这些调用必须返回与前一个活动不同的结果(使用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();
}

1 个答案:

答案 0 :(得分: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();
}