当我有两个场景时,如何完成我的活动

时间:2013-01-31 19:25:43

标签: android android-activity

我有一项活动可以创造一些东西然后开始另一项活动。第一项活动必须在创建第二项后完成。在这种情况下,我希望它只以默认的onDestroy()结束。但是如果用户在第一次活动没有完成时按下键(硬件一),我希望它在完成之前调用一个函数。 有没有温和的方法来实现这一目标?我考虑覆盖后退键的默认操作,但它是唯一且最优雅的解决方案吗?

3 个答案:

答案 0 :(得分:1)

您可以在第一个活动中声明一个标志,指示它是否已完成。

public class Activity1 extends Activity {
    private boolean workDone = false;

    . . .

    @Override
    protected void onDestroy() {
        if (!workDone) {
            specialFunction();
        }
        super.onDestroy();
    }
}

然后在Activity1的某个地方,当它完成了必要的工作后,只需设置workDone = true

答案 1 :(得分:1)

覆盖onBackPressed方法就可以了。

  

public void onBackPressed()

     

当活动检测到用户按下背面时调用   键。默认实现只完成当前活动,   但你可以覆盖它来做任何你想做的事。

http://developer.android.com/reference/android/app/Activity.html#onBackPressed()


public void onBackPressed() {
    // do something.
    super.onBackPressed();
}

答案 2 :(得分:0)

你可以覆盖onBackButtonPressed()然后调用super.onBackButtonPressed,这样你就不会错过超类所做的任何事情,但你可以在调用中添加内容。同样适用于onDestroy()

在这个例子中,utask是我想要杀死的异步任务。

    @Override
    protected void onStop() {
        utask.cancel(true);
        super.onStop();

    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        utask.cancel(true);
        super.onBackPressed();

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        utask.cancel(true);
        super.onDestroy();

    }