繁体   English   中英

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

[英]How to finish my activity when I have 2 scenarios

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

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

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

    . . .

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

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

覆盖onBackPressed方法就可以了。

public void onBackPressed()

当活动检测到用户按下后退键时调用。 默认实现只是完成当前活动,但您可以覆盖它以执行您想要的任何操作。

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


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

那么你可以覆盖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();

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM