Android - 如果不运行onCreate(),则无法获得恢复活动的通知

时间:2015-07-09 14:58:13

标签: android bluetooth notifications oncreate resume

我试过通过很多其他线程来查看,但没有一个回复对我有所帮助。在我的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

那么,我做错了什么让我的应用程序打开了我的主要活动的新实例?不幸的是,这种行为断开了我的蓝牙连接,从而严重破坏了用户体验。

1 个答案:

答案 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。