ユーザーに通知するために、AlertDialogまたはSnanckbarを使用します。表示するには、両方ともActivityコンテキストが必要です。三例:現在の活動から生産ユーザー通知にコンテキストが必要
- メッセージ:別のスレッドから生じたものだ些細な
- メッセージ:スレッドがメッセージをブロードキャストすることができますので、私は放送/レシーバ・パターンを実装していますし、活動がメッセージを受信して、表示さクロージング活性、例えば活動のマスター開始アクティビティセレクタから生成
メッセージは、ユーザがオプションを選択し、コードはいくつかのものを行うと、マスターに戻る
// Selector activity draft sample mButtonSeelcted.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { super.onClick(view); doMagicForSelected(); mContext.sendBroadcast(intentForUserMessage); mContext.startActivity(intentToMasterActivity); } });
レシーバーがキックインするまでに、セレクターのアクティビティーが終了したため、メッセージは表示されません。さらに、AlertDialogが決して却下されないので、WindowLeaked例外が発生します。
どのような考えですか?私は行方不明のパターンがありますか?
パフォーマンス/セキュリティのヒントありがとうございました:) doMagicGorSelectedメソッドがユーザーにブロードキャストできるexeption(ネットワークの問題など)を取得した場合は、メッセージをブロードキャストします。この方法はマスターについては知らない。 私の主張は、コンテキストが揮発性であり、私がそれを使用している間に破壊/変更することができるという事実をどのように処理すべきかということです。 – denispyr
@denispyr: "私の主張は、文脈が揮発性であり、私がそれを使用している間に破壊/変更することができるということです。" - マスターがダイアログまたはスナックバーを表示するものであれば、ボラティリティはないので、私は懸念を理解していない。 – CommonsWare
私に明確にさせてください。私のドラフトコードに関しては、 'doMagicForSelected()が "displayable"例外(例えば悪い入力)を受け取った場合、それはそのメッセージをブロードキャストします。 Selectorアクティビティはそれを受け取り、ダイアログを表示します。これがonLoadFinishedの間に起こり、問題がなければ、ダイアログが表示されます。活動が終了する前に起きているなら、私は困っています。この場合に従うパターンはありますか? – denispyr