簡體   English   中英

Android TaskStackBuilder addNextIntentWithParentStack 凍結應用程序

[英]Android TaskStackBuilder addNextIntentWithParentStack freezes app

我試圖在我的應用程序中顯示來自 BroadcastReceiver 的通知,但創建父堆棧給我帶來了問題。 當我調用以下代碼時,應用程序只是凍結(無一例外,只是凍結)

Intent notifIntent = new Intent(context, NotificacionesActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntentWithParentStack(notifIntent); // <- code execution freezes here
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

這基本上是從這里的 android 文檔復制粘貼: https : //developer.android.com/training/notify-user/navigation#build_a_pendingintent_with_a_back_stack

幾秒鍾后,輸出顯示這個

Thread[3,tid=5321,WaitingInMainSignalCatcherLoop,Thread*=0xf005cc00,peer=0x16940088,"Signal Catcher"]: reacting to signal 3
Wrote stack traces to '[tombstoned]'

然后開始發送垃圾郵件

Background concurrent copying GC freed 87185(5MB) AllocSpace objects, 0(0B) LOS objects, 16% free, 30MB/36MB, paused 223us total 101.944ms

我查了一下,似乎應該在 /data 中的某處保存一個 tomstone 跟蹤,但是我在那里找不到任何東西,我認為日志永遠不會被保存。 該活動在清單中聲明了 parentActivityName。

<activity
   android:name=".activity.NotificacionesActivity"
   android:parentActivityName=".activity.MainActivity"
   android:theme="@style/AppTheme.NoActionBar"
   android:screenOrientation="portrait"
   />

如果我不創建掛起的意圖,則會顯示通知,因此我很確定上面的代碼是導致問題的原因。 我已經嘗試過 Api 28 和 29(android 9 和 10),卸載應用程序,甚至創建了一個新的虛擬設備,結果都是一樣的,有趣的是這段代碼曾經有效,現在卻沒有了。

已解決似乎我的 mainActivity 將自己作為 parentActivityName,因此創建堆棧會導致遞歸循環哈哈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM