连接到远程服务器的应用程序的Android后退按钮行为

时间:2012-03-16 20:36:08

标签: android back-button

我正在构建一个连接到远程服务器的应用程序,然后让您在该服务器上执行操作,显示数据等。

有一个“连接”活动,可让您键入服务器的IP地址并具有“连接”按钮。连接后,活动B,C,D独立并作用于服务器的不同方面。

如果单击“菜单”按钮,则可以导航到任何活动。如果断开连接,则只能导航到“连接”活动...其他菜单项将被禁用。

以下是我希望“后退”按钮和任务“后台堆栈”行为如何工作的用例:

  1. 首次启动应用时,请打开“连接活动”
  2. 如果应用程序崩溃(God禁止),请启动Connect活动。不要试图返回B,C或D!
  3. 如果查看B,C或D并且连接丢失,“返回”按钮会将您直接带到Connect活动。
  4. 如果您的堆栈看起来像Connect-> B-> C-> D,那么您导航到Connect屏幕并断开连接,您的堆栈将更改为Connect(仅限)。你无法点击“返回”并返回B,C或D
  5. 如果您离开应用程序(单击“主页”按钮)并通过单击应用程序图标返回,它应该返回到堆栈顶部(假设在此期间连接没有丢失)。
  6. 如果您已连接,“返回”会将您带到上一个活动。防爆。假设连接 - > B-> C-> D->连接 - > C-> B。一个“后退”将您带到“C”,另一个“返回”连接,另一个“后退”到D(即正常堆栈)。
  7. 有关如何执行此操作的任何建议? 特别是上面的第2项(让我头疼......是的,崩溃不应该发生)

    我已阅读Tasks and Back Stack开发指南,但无法决定如何将所有启动模式和亲和力应用于此情况。

1 个答案:

答案 0 :(得分:0)

写一堂课,

 class MyApplication extends Application{

...

public static boolean isConnected;
...

   } 

现在,无论何时断开连接或连接,都应将该布尔值设置为true或false。如果该布尔值为“true”,则相应地采取措施。

E.g。

  if(MyApplication.isConnected){ 
  startActivityB();
 }else{
   startConnectActivity();
 } 

还要记住,要启动一个活动,你需要一个活动上下文,所以在MyApplication中维护一个Activity类型的静态变量,并在你的第一个ACTIVITY的onCreate()方法中设置它,如MyApplication.activityObj = this 然后使用该上下文调用活动,如 - MyApplication.activityObj.startActivity(....