2017-08-17 42 views
0

我有4项活动。第一个是飞溅活动,第二个是主菜单活动,第三个活动是主要活动的特定选项,第四个是第三个活动的结果。我正在使用noHistory="true"作为清单文件中的第二个活动。我在所有活动的选项菜单中都有退出选项。一旦我退出应用程序的前三个活动,我打开应用程序意味着它将启动应用程序(没有恢复活动),但是当我退出第四个活动时,再次打开应用程序意味着它显示第三个活动,而不是启动应用程序。在选项菜单中如何退出所有活动(包括恢复活动)

退出代码是

flag_activity_clear_top 
flag_activity_no_history 

,但以前的活动不紧密。 我们如何退出所有活动(包括恢复活动)?

如果我使用noHistory="true"属性进行第三项活动意味着它可以正常工作,但是当我按下主屏幕时,我又重新打开应用程序,它显示启动活动而不是恢复活动。所以我避免在第三项活动中使用noHistory属性。

请给出退出所有活动的解决方案。

+0

当你要下一个活动,只是完成当前活动。 –

+0

感谢您的答复先生。在任何活动我有退出选项menu.if我退出第三活动意味着没有问题。它像往常一样退出,我再次打开应用程序,它从开始就开始。当我们再次从第四个活动退出时,我从启动器重新打开应用程序,它打开第三个活动(恢复活动)。我想退出所有活动(包括恢复活动) –

回答

0

使用意向

Intent intent = new Intent(getApplicationContext(), FirstActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("FLAG_ACTIVITY_CLEAR_TOP", true); 
    startActivity(intent); 

在OnCreate中的所有活动

if (getIntent().getBooleanExtra("FLAG_ACTIVITY_CLEAR_TOP", false)) { 
    finish(); 
} 
+0

感谢您的回复redAllocator.I将检查并回来,您的先生 –

+0

有一个很好的编码。 – redAllocator

+0

嗨red allocator.Actually我不会去firstActivity,而不是我从所有的活动退出。一旦我按退出按钮(我不想去第一个活动),我想退出所有的活动。 –

0

使用sharePreference添加和检查共享偏好里面的值(内部的onResume或的OnStart()),每次启动应用程序和相应导航。

+0

感谢您的答复的个性balekai.Kindly请发布使用sharePreference的示例(退出所有活动) –

+0

你可以通过这个链接了解有关Sharepreference在Android的https://developer.android .com/training/basics/data-storage/shared-preferences.html –

+0

感谢您回复sonal balekai。 –

0

要关闭所有活动,你可以尝试拨打

finishAffinity();

这个方法结束当前的活动,以及在具有相同的亲和力当前任务立即它下面的所有活动。

finishAffinity()可以从上下文中调用IE(活动,服务等) 如果每次关闭应用程序时要关闭你只需要调用finishAffinity在OnDestroy()方法或活动onClick

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     finishAffinity(); 
    } 

finishButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finishAffinity(); 
     } 
    }); 

而且例如用于menu

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.exit_item) { 
     finishAffinity(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

而且您不应该使用任何标志来启动或关闭活动,只需拨打finishAffinity()即可退出应用程序并完成所有活动。

在这个视频中,你可以看到它是如何工作https://youtu.be/L5w8mhB9aNk

+0

感谢您的回复Vlad Pylyp.I将检查并回来给您先生 –

+0

而我使用finishAffinity();它显示一些“错误” –

+0

请发布示例代码或参考链接使用finishAffinity(); –