爲了通知用戶我使用AlertDialog或Snanckbar。他們都需要一個活動上下文才能顯示。三種情況:從當前活動產生用戶通知需要上下文
- 信息:這是從另一個線程產生微不足道
- 消息:我在執行廣播/接收器圖案,使得線程可以廣播消息和活動接收和顯示消息從關閉活性,例如酶活性萬事達開始活動選擇器產生
消息時,用戶選擇一個選項,該代碼做一些東西,然後返回到主
// Selector activity draft sample mButtonSeelcted.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { super.onClick(view); doMagicForSelected(); mContext.sendBroadcast(intentForUserMessage); mContext.startActivity(intentToMasterActivity); } });
現在不顯示消息,因爲在接收器啓動時,Selector活動已完成。此外,它提供了一個WindowLeaked異常,因爲AlertDialog從未被解僱。
有什麼想法?有沒有我失蹤的模式?
感謝您的性能/安全提示:) 如果doMagicGorSelected方法獲得可以廣播給用戶的一個exeption(例如網絡問題),那麼它將廣播該消息。這種方法不知道主人。 我想我的觀點是,我應該如何處理這樣一個事實:上下文是不穩定的,並且在我使用它時可以被銷燬/更改。 – denispyr
@denispyr:「我想我的觀點是,我應該如何處理這樣一個事實:上下文是不穩定的,可以在我使用它時被銷燬/更改」 - 如果主人是顯示對話框或快餐欄的人,那麼沒有波動性,所以我不理解這個問題。 – CommonsWare
讓我澄清。關於我的草稿代碼,如果'doMagicForSelected()獲得「可顯示」異常(例如錯誤輸入),它將廣播該消息。選擇器活動將接收它並顯示一個對話框。如果這在onLoadFinished期間發生,那麼沒有問題,對話框將顯示。如果它在活動結束之前發生,那麼我會陷入困境。這種情況下是否存在一種模式? – denispyr