暂时禁用Android后退按钮是否可以?

时间:2016-11-18 16:46:26

标签: android back-button disabled-control

我有一个我深入链接的活动,通常会深入到一堆活动中。

当活动启动时,它所做的第一件事是进行可能长时间运行的异步调用以获取一些数据。

当用户点击当前活动的“向上”或“返回”按钮时,必须知道要提取的数据。

我遇到的问题是,如果用户在数据返回之前单击后退按钮,我不知道应该启动哪个Activity,因为正确的Activity堆栈依赖于拥有I& #39; m fetching。

一个简单的方法是拦截onBackPressed()调用,如果我没有我需要的数据,我可以忽略背压,但这似乎是一个明显的坏主意,因为我' m改变系统UI的行为。

或者我可以注意到onBackPressed()已被调用,一旦数据返回,我可以完成()当前活动并启动正确的活动但是在这种情况下,用户有可能点击按钮并且等待一段时间让数据返回,这样他们按下后退按钮和应用程序实际执行后退就会有明显的延迟。

有什么想法以优雅的方式解决这个问题?

1 个答案:

答案 0 :(得分:3)

我认为你应该避免阻止用户离开你的应用,因为用户不喜欢在你的应用中感到“陷入困境”,或者更多没有经验的用户会认为你应用程序冻结了手机。

现在,在你的情况下,我建议覆盖onBackPressed,因为你已经在做了,但有一条消息让用户知道下载尚未完成,并移动后台下载,同时显示一个 temp actvity,它只是声明数据正在加载,可能还有一个很好的进度条。

@Override
public void onBackPressed() {
    //Show a dialog with yes or no option or other options, and if user 
    // answers yes call super.onBackPressed();
}

希望它有帮助:)!