Android 从主按键屏幕启动活动

Android 从主按键屏幕启动活动,android,android-activity,android-service,android-homebutton,Android,Android Activity,Android Service,Android Homebutton,我有一个启动活动的后台服务 Intent i = new Intent(this, MyActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); 销毁此活动并通过“长按home键菜单”重新启动后,此活动将再次启动。但是我想开始主要的活动。我怎么会意识到这一点呢?你能详细解释一下吗?如果我了解您的问题,请尝试设置标志\u活动\u否\u历史记录 或者,手动解决方案是检查MyActivity中的inte

我有一个启动活动的后台服务

Intent i = new Intent(this, MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

销毁此活动并通过“长按home键菜单”重新启动后,此活动将再次启动。但是我想开始主要的活动。我怎么会意识到这一点呢?

你能详细解释一下吗?如果我了解您的问题,请尝试设置标志\u活动\u否\u历史记录

或者,手动解决方案是检查MyActivity中的intent上的标记\u ACTIVITY\u LAUNCHED\u FROM\u HISTORY,如果您看到此标记集,则启动到主活动。以下代码应执行此操作:

if ((getIntent().getFlags() & FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) > 0) {
   activity.startActivity(new Intent(context , MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));    
}

问题就像是从服务-->通知来了-->用户启动应用程序agian-->无通知-->主活动出现在前台一样 现在,如果应用程序是从“长按home键菜单”启动的,则主要活动是启动并显示通知


因此,一个明确的解决方案是将主活动设置为“Exclude From recent=true”和“No History=true”;用户将无法在“long press home key menu”(长按home键菜单)中看到您的活动。

我从服务启动活动以显示通知(我无法使用内置通知)。如果用户再次启动应用程序,他不应该看到通知活动。他应该看到主要的活动。如果应用程序是从应用程序菜单重新启动的,或者如果主活动不是通过按后退按钮终止的,则可以正常工作。如果应用程序是从“长按home键菜单”(有更好的名称吗?)重新启动的,并且主活动先前是通过按back按钮终止的,则通知活动再次启动。noHistory不起作用:-(.谢谢!我现在明白了。可能有更好的解决方案,但请参阅我的编辑以获得解决方案。它似乎起作用,但我认为这不是最好的方法;-)。如果能找到更好的解决方案,那就太好了。但是谢谢你的解决方案!这是一个解决办法。但最好将其纳入历史并开始正确的活动。非常感谢。这是AndroidManifest提供的参数,我们使用它使应用程序以我们的方式工作,这是正确的:)当然,但对用户来说不是很舒服;-)。但是谢谢你给我展示了这个可能的解决方案!使用首选项来决定在启动活动时需要启动哪些活动。您找到了好的解决方案吗?