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