android - 我能否实现一个不需主动传入上下文的dialog?
阿神
阿神 2017-04-18 09:16:44
0
6
596

既然我可以通过注册activity生命周期回调的方法在任意地方获取到最后一个onresume的activity,
那么我是否可以创建一个工具类,工具类利用这个activity来构造dialog呢?
这样做有什么坏处呢?
我现在用一个toast工具类,在工具类中直接使用了application的context,这样做可以吗?

阿神
阿神

闭关修行中......

全員に返信(6)
巴扎黑

はい、できますが、なぜですか?ダイアログ ツール クラスをカプセル化し、アクティビティを渡すだけです。トーストに関しては、applicationContext を使用することをお勧めします。

いいねを押す +0
Peter_Zhu

ダイアログを構築し、アクティビティ コンテキストを直接渡します。コールバックなどを使用する必要はありません。他の人のパッケージ化されたツール ライブラリを参照して、他の人のアイデアを確認することができます。

いいねを押す +0
洪涛

注意してください。公式 Web サイトにあるように、テーマをダイアログに設定するだけで、アクティビティをダイアログとして使用できます

いいねを押す +0
洪涛

本来、システム レベルのダイアログは applicationContext を渡すだけで非常に便利ですが、さまざまなメーカーによる過度のカスタマイズにより (Xiaomi のシステム レベルのポップアップの嫌なカスタマイズに遭遇しました。) -up ボックス、同じバージョン、更新されたら変更する) したがって、上記のすべてを実装するには、カスタマイズされたダイアログ形式のアクティビティをポップアップ ボックスとして使用するのが最善です。現在、多くの企業がこれを行っています。 Tencent の伝書鳩プッシュは、カスタマイズの手間をかけずに確実に開くことができる方法です。

いいねを押す +0
Peter_Zhu

Android ダイアログの場合、何があってもコンテキストを渡す必要があります。 Activity を渡すことは、実際には Context を渡すことと同じです。アプリケーションのコンテキストを使用することはできません。また、静的なコンテキストは推奨されず、メモリ リークが発生する可能性があります。

ただし、依存関係注入などの方法を使用して、このプロセスを非表示にしたり簡素化したりすることができます。

いいねを押す +0
巴扎黑

それはできません (お勧めしませんが、言いたいのですが)
既に実装されているビルドでは、何が起こるか予想してみましょう。

  1. ネットワーク リクエストが送信され、ページが終了しましたが、リクエストが返されたときにダイアログ ボックスが表示されました。このダイアログに後続の操作がある場合はどうすればよいですか?ダイアログと操作にデータがあり、これらは処理されます。コードをどこに配置すればよいですか? このデータを Dialog インスタンスに正常に配置して、新しい内部クラスを作成できます。おめでとうございます。終了したばかりのアクティビティのメモリがリークしました。

  2. どこでも再生でき、コード構造も維持できるユニバーサル ダイアログの使用を制限するにはどうすればよいですか?

  3. 小規模なプロジェクトの場合は、必要に応じて BaseActivity を直接作成し、コード構造を処理してダイアログ ボックスをポップアップ表示することができます。理由は十分ではありません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート