0

私はAndroid開発に少し慣れていません.DLNAサーバーのネットワークを参照し、各DLNAサーバーをディレクトリとして参照できる非常に単純なアプリを構築しようとしています. 考え方は非常に単純です。1 つのアクティビティがネットワーク上のすべての DLNA サーバーを表示し、ユーザーが 1 つを選択すると、DLNA メディア サーバーのディレクトリを参照する別のアクティビティにリダイレクトします。

私の質問は非常に基本的なものです。「選択したサーバー」、「現在のディレクトリ」などの情報を保持するにはどうすればよいですか? アプリケーションの残りの部分が何をすべきかを知る方法が必要なだけです。このデータをサービスに組み込む必要がありますか? それは、サービスのあるべき姿という共通認識に反しているように思えます。アプリケーションの状態を保持するにはどうすればよいですか?

4

1 に答える 1

2

いくつかのオプションがあります。私が最も気に入っているのは、あるアクティビティから次のアクティビティに送信するIntentオブジェクトでこれらの値を渡すだけです。したがって、DLNAメディアサーバーのディレクトリを参照するアクティビティは、インテントで選択されたサーバーを受け取ります。それがDLNAリストアクティビティからのものである場合、それは素晴らしいことですが、インテントは、メディアサーバーディレクトリをユーザー。データをアプリケーションの他の部分に依存する必要がないように、アクティビティ内に機能をカプセル化するように非常に努力してください。

アプリケーション全体で本当に必要なデータがある場合は、SharedPreferencesを確認してください。これらはユーザーに表示できるため、ユーザーはアプリケーションの呼び出し全体で持続する選択を行うことができ、アプリケーション内のすべてのアクティビティで設定を簡単に読み取って最新の状態に保つことができます。ただし、すべての設定を表示可能にする必要はありません。いつでもプリファレンスエディタを作成して、ユーザーに表示せずに独自のプリファレンスを読み書きできます。

他のいくつかのオプションは、共有値を保持するシングルトンクラスを設定し、すべてのアクティビティが参照できるようにするか、最後の手段としてApplicationクラスを拡張し、ゲッターとセッターを作成してアプリケーション全体で値を使用できるようにすることです。アプリケーションはAndroidの重要なクラスであり、現在または将来に誤って何かを壊さないように、そのままにしておく方がよいため、最後の手段と言います。

他の質問に答えるには、サービスを使用してネットワークアクセスを行うだけでなく、スレッドも作成する必要があります。Androidサービスには、デフォルトではバックグラウンドスレッドが含まれていません。これは、自分で行う必要があります。メイン(別名UI)スレッドからネットワーク呼び出しを行わないでください。

于 2011-02-10T03:19:45.110 に答える