我有一项服务,一旦完成任务,它就会启动从我的应用程序启动活动的意图。像这样:
Intent i = new Intent(MyService.this, MyActivityToBringToFront.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
//i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
即使我的申请被关闭,该服务也可以运行。在这种情况下,我的应用程序关闭,我需要它将活动带到用户当前正在做的任何事情的前面。因此,如果用户在不同的应用程序中,我需要在前面弹出活动。这可能吗。没有任何标志有任何影响。基本上我需要它像系统电话应用程序。当您接到电话时,它总是将电话带到前面。我怎样才能做到这一点?谢谢!
答案 0 :(得分:1)
首先,你需要在内存中保留上下文来制作意图。
辅助您需要一种可以每24小时重新获取一次上下文的机制,因为通常情境会在24小时内保持活动状态。
在
从服务启动活动:
Intent dialogIntent = new Intent(getBaseContext(), myActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);
来源:https://stackoverflow.com/a/3607934/2956344
将活动推到顶部添加
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
答案 1 :(得分:1)
Intent i = new Intent(MyService.this, MyActivityToBringToFront.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity( i);
API参考是
如果设置,则正在启动的活动已在运行中 当前任务,然后而不是启动它的新实例 活动,其上的所有其他活动将被关闭 这个意图将作为一个传递到(现在在顶部)旧活动 新的意图。
例如,考虑一个由活动组成的任务:A,B,C,D。 如果D调用带有解析为的Intent的startActivity() 活动B的组成部分,然后C和D将完成,B接收 给定的Intent,导致堆栈现在为:A,B。
上例中活动B的当前运行实例将会 要么接收你从这里开始的新意图 onNewIntent()方法,或者自己完成并重新使用new 意图。如果它已宣布其启动模式为"多个" (该 默认情况下,您没有设置FLAG_ACTIVITY_SINGLE_TOP 意图,然后它将完成并重新创建;所有其他发射 模式或如果设置了FLAG_ACTIVITY_SINGLE_TOP,那么此Intent将是 传递到当前实例的onNewIntent()。
此启动模式也可用于与之配合使用 FLAG_ACTIVITY_NEW_TASK:如果用于启动任务的根活动, 它会将任何当前正在运行的任务实例带到 前景,然后将其清除到其根状态。这是特别的 例如,从通知启动活动时很有用 管理器。
答案 2 :(得分:0)
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setAction("android.intent.action.VIEW");
i.setComponent(ComponentName.unflattenFromString("com.example.package/com.example.package.activityName"));
startActivity(i);
答案 3 :(得分:0)
从服务中启动活动并不总是一个好主意。您可能想要使用通知。如果用户点击通知,那就是您显示活动的时间。