Ion*_*ers 48 android android-activity
让我们试着解释一下我的问题:我得到了一个应用程序和一个服务.应用程序以活动A启动.服务发送一个广播,让应用程序启动活动B现在用户启动活动C.
现在该服务想再次启动活动B. 但是我怎么让他知道活动仍然在堆栈上,或者是否有一个意图标志?
我如何避免它会启动活动B,因为它已经在堆栈中?
Sad*_*amy 25
您可以使用标志Intent.FLAG_ACTIVITY_NEW_TASK.如果活动已经在运行,它将把它带到前面而不是创建新活动.
如果您使用此添加Intent.FLAG_ACTIVITY_CLEAR_TOP,则将清除此堆栈中此活动之后的所有活动.
Pel*_*let 10
如果活动将在已经开始时位于顶部,请设置FLAG_ACTIVITY_SINGLE_TOP标志
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
mContext.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
方法android:launchMode="singleInstance",只是添加标志Intent不适合我.有效的是:
在活动开始的代码中:
Intent intent = new Intent(activity, ActivityThatHasToBeStarted.class);
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
在ActivityThatHasToBeStarted:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
finish();
return;
}
// Code for this creation
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44786 次 |
| 最近记录: |