私のカスタムダイアログビルダは、Asynctasks、Webサービスメッセージ、UI入力エラー、またはアクティビティコンテキストを持たないサービス。私は常にApplicationクラスにcurrentActivity
というアクティビティを作成していました。その後、すべての活動の再開時に彼らはcurrentActivity
に座っています。私のアプリケーションでグローバルダイアログのベストプラクティスは何ですか
@Override
protected void onResume() {
super.onResume();
MyApplication.currentActivity = MainActivity.this;
ダイアログを作成する場合は、そのコンテキストを使用しました。しかし私には1つの問題がありました。たとえば、私はRegisterActivityを開いてからcurrentActivity
を変更しました。アプリケーションの背景やいくつかの他のアクティビティが開かれた場合、私のアプリはそのコンテキストでダイアログを作成するとクラッシュします。だから魔女活動を扱うのはです。私はグーグルで、一部の人がレイアウト以外のアクティビティにCustomDialogを埋め込み、そのアクティビティを開くことがわかりました。それは良い解決策ではないようです。 UPDATED
は、例えば、私はすべての送信のSMSを扱うSMSManagerクラスを持っています。私は、ユーザーにダイアログを開き、SMSを送信する前にいくつかのカスタムオプションを選択したいと思っています。
私のアプリケーション全体で、グローバルダイアログのベストプラクティスは何ですか?
currentActivityを維持するのが悪いことを知っています。私はより良い解決策を探しています。私のカスタムダイアログビルダーはあなたのものと非常によく似ていますが、それを指しています。私が質問したように、私は多くのクラスからダイアログを開きたいと思っています。その中にはアクティビティコンテキストがないものがあります。たとえば、私は、アプリケーションコンテキストで動作するSMSマネージャクラスまたはWebサービスクラスからのダイアログを表示する必要があります。私はそのコンテキストでダイアログを開くことができません。 – Kenji
私の回答を通知のヒント – artkoenig
で更新しました。サービスからのUIダイアログを表示せず、単にイベントをブロードキャストし、アクティビティをキャッチします。これはMVCアーキテクチャとよく似ています。私のサービスがユーザーと通信して何らかの入力をしたいのであればどうでしょうか?この場合の – Kenji