0

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

4

3 回答 3

1

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

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

    . . .

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

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

于 2013-01-31T19:31:03.353 回答
1

覆盖onBackPressed方法没问题。

公共无效 onBackPressed ()

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

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


public void onBackPressed() {
    // do something.
    super.onBackPressed();
}
于 2013-01-31T19:37:13.620 回答
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();

    }
于 2013-01-31T19:30:28.570 回答