从非 Activity class 调用 Activity

Calling an Activity from Non-Activity class

我 运行 遇到了这个问题,我 运行 从非 activity class 启动后台进程。我在前台有一个 activity。我想刷新 activity,即调用 MainActivity.java 以使其打开并且不会复制应用程序 运行ning(这会导致错误)。

更具体地说,我 运行 在后台设置 android SyncAdapter.java。我的菜单刷新项被用户单击。动画开始旋转一圈。然后调用同步适配器,后台进程开始 运行ning... 当它完成时,我重新调用以打开一个新的 activity:

Intent intent = new Intent("com.example.MainActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// mContext is a global variable of passed application context.
mContext.startActivity(intent); 

这让我可以关闭所有打开的 activities/tasks 并打开这个新的 activity 以便用户在应用程序的主页上继续,而无需额外的重复 windows。

我唯一关心的是代码中的那些“|”。有人可以向我确切解释 intent.setFlags(***) 通话中发生了什么吗?旗帜是一个接一个地被调用吗?还是每个标志的结果都通过管道传递给下一个标志调用? (“ | ”是否被视为管道调用?)

谢谢!

这是按位包含或。

它使用所有标志在位级别进行 OR 运算,然后用结果调用 setFlags 方法。

| 是按位或条件。它使用这些标志的二进制值在位级别执行布尔或运算(与 || 的逻辑或相反)。