完成()不工作/应用程序结构

时间:2014-02-26 15:49:29

标签: android android-activity

我在完成MainActivity时遇到问题。我打电话给MainActivity.this.finish();,但它所做的就是移除屏幕一秒钟然后它返回。当我在菜单中选择“退出”选项时,我希望应用程序完全关闭。

我的应用程序的工作原理如下:

  • 侦听器(侦听来电和消息的库)
  • 登录活动(这也有一个用于注册和登录的监听器)
  • 主要活动(登录后 - 我的应用程序带有保存片段的幻灯片菜单)

Listener转到LoginActivity时,我没有完成Listener,因为我仍然需要它运行。 LoginActivityMainActivity也是如此。当我使用退出菜单项从finish()转到MainActivity时,我只会致电LoginActivity

使用adb shell dumpsys activity我找到了我的任务记录(如下所示)

Running activities (most recent first):
TaskRecord{42fe4a38 #88 A com.example U 0}
  Run #3: ActivityRecord{42809ce0 u0 com.example/.activity.MainActivity}
  Run #2: ActivityRecord{425f8d80 u0 com.example/.activity.login.LoginActivity}
  Run #1: ActivityRecord{425ec3d8 u0 com.example/.activity.CallListener}
TaskRecord{429dc7f8 #2 A com.android.launcher U 0}
  Run #0: ActivityRecord{429da420 u0 com.android.launcher/com.android.launcher2.Launcher}

mResumedActivity: ActivityRecord{42809ce0 u0 com.example/.activity.MainActivity}
mFocusedActivity: ActivityRecord{42809ce0 u0 com.example/.activity.MainActivity}

我的问题有两部分:

  1. 当我致电finish()
  2. 时,为什么我的MainActivity没有完成
  3. 这是一个合适的结构吗?我应该有一个包含所有内容的MainActivity还是可以的?
  4. 对此的任何帮助都会很棒。

    由于

1 个答案:

答案 0 :(得分:0)

要确保关闭所有活动,您可以运行下一个代码来完成:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

关于标记,您可以详细阅读here