0

我的应用程序像许多其他应用程序一样需要不断地连接互联网。在我的主要活动中,我有:

@Override
public void onStart() {
    if (!isOnline()) {
        Intent disconnected = new Intent(this, Disconnected.class);
        startActivity(disconnected);
    }
    else {
        ...
    }
}

Disconnected 活动显示带有消息和重试按钮的 TextView。现在的问题是,如果用户按下返回,他会立即再次进入 Disconnected 活动,并且无法使用返回退出应用程序。什么是处理没有互联网连接的优雅方式?我的主要活动是一个 ListView,我是否应该只有在没有连接时才出现的隐藏视图?(我觉得这不是正确的方法)。

4

2 回答 2

2

可以有几个选项

选项1:

使用 AlertDialog 显示断开连接。将其设置为不可取消并带有两个按钮,例如重试和退出。

选项 2:

如果发生网络断开连接,则使用启动活动作为结果启动断开连接活动。在新活动中有一个重试按钮。如果设置了重试,则设置 OK 并完成。如果后退按钮按下设置取消。现在在 onActivityResult 的第一个活动中,如果你得到 RESULT_OK 然后重试连接。

于 2013-06-30T12:42:59.330 回答
0

如果您的启动 Activity 只是 if 语句,并且仅用于检查用户是否有互联网连接,您可以在进入 Activity 时简单地完成该DisconnectedActivity

您可以通过设置标志调用来做到这一点StartActivityFLAG_ACTIVITY_CLEAR_TOP

@Override
public void onStart() {
    if (!isOnline()) {
        Intent disconnected = new Intent(this, Disconnected.class);
        disconencted.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(disconnected);
    }
    else {
        ...  // Here you would want to do the same thing; 
             // if not, the user could navigate back to this activity as well
    }
}

我无法对此进行测试,但我认为它应该可以工作。

于 2013-06-30T13:37:14.033 回答