我试过通过很多其他线程来查看,但没有一个回复对我有所帮助。在我的displayNotification()方法中,我已经这样做了:
Intent intent = new Intent(this, MainActivity.class);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
我还将其包含在AndroidManifest文件中的活动中:
android:launchMode="singleTop"
然而,当我尝试运行代码时,我得到了这个日志:
07-09 16:26:44.982 726-1167/? I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x1000c000 cmp=com.example.chrekm.inductivechargingcontroller/.MainActivity} from uid 10091 on display 0
07-09 16:26:45.010 726-1167/? V/WindowManager﹕ addAppToken: AppWindowToken{2a93c8d9 token=Token{14f61720 ActivityRecord{1ee92623 u0 com.example.chrekm.inductivechargingcontroller/.MainActivity t14858}}} to stack=1 task=14858 at 2
07-09 16:26:45.023 726-1167/? I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x24000000 cmp=com.example.chrekm.inductivechargingcontroller/.MainActivity} from uid 10091 on display 0
07-09 16:26:45.023 726-798/? V/WindowManager﹕ Adding window Window{359baa38 u0 Starting com.example.chrekm.inductivechargingcontroller} at 15 of 21 (after Window{bcd3a48 u0 com.example.chrekm.inductivechargingcontroller/com.example.chrekm.inductivechargingcontroller.MainActivity})
日志中给我的标志似乎是:
FLAG_ACTIVITY_TASK_ON_HOME - 0x00004000
FLAG_ACTIVITY_CLEAR_TASK - 0x00008000
FLAG_ACTIVITY_NEW_TASK - 0x10000000
FLAG_RECEIVER_REPLACE_PENDING - 0x20000000
FLAG_ACTIVITY_CLEAR_TOP - 0x04000000
那么,我做错了什么让我的应用程序打开了我的主要活动的新实例?不幸的是,这种行为断开了我的蓝牙连接,从而严重破坏了用户体验。
答案 0 :(得分:0)
好的,所以我实际上自己设法解决了这个问题。我没有使用TaskStackBuilder,而是执行了以下操作:
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
代码少,效果很好!如果其他人有同样的问题,只需尝试使用PendingIntent.getActivity而不是stackBuilder.getPendingIntent。