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