7

現在の Android プロジェクトでは、いくつかのアクティビティ間でデータを渡しています。アクティビティ間でデータを送信するためのベスト プラクティスがあるかどうかに興味がありました。1 つのアクティビティの結果に基づいて更新/追加され、後で 2 つのアクティビティを Facebook で共有するために使用される文字列があります。この文字列をグローバルな静的文字列として設定してから共有する必要がありますか、それとも を使用して文字列を渡す必要がありますintent.PutExtraか?

グローバル文字列はおそらくコードが少ないですが、別の静的変数を意味します。または、インテント Extra は問題ありませんが、いくつかのアクティビティを通過しているため、繰り返しのように見えます。どちらの方法でも機能しますが、どちらが優先されるかを知りたいだけです。

4

3 に答える 3

6

私の見解では、インテントのみが機能します。Androidでは、アプリケーションが強制終了された場合に備えてアプリケーションを準備する必要があります(たとえば、着信ビデオコールはアプリケーションをバックグラウンドに置き、大量のメモリを消費するため、バックグラウンドアプリが強制終了されます)。Androidがアプリを復元すると、表示されていたアクティビティが再開され、アプリを開始したインテントが再送信されます。これは、これらが永続ストレージに保存されるためです。ただし、他のクラス(静的変数を含む)の状態は保存されず、保存しないと失われるかリセットされます。

于 2012-04-04T23:46:02.383 に答える
5

グローバル変数の使用は常に避ける必要があります。場合によってはそれらが必要になりますが、ほとんどの場合、これは設計上の問題が原因です。「コードが少ない」またはコーディングが簡単なため、グローバル変数を使用しないでください。ところで、定数ではなく public static 変数にのみ属します。グローバル変数により、あなたの人生はより困難になります

  • あなたのコードは読みにくいです(その変数はどこから来たのですか..「スコープ」外です)
  • テストが難しい (変数を読み取るのは誰か? 変数を変更するのは誰か?)
  • アクセス制御なし (getter/setter なし)
  • ねじ切り
  • そしてもっとたくさん
于 2012-04-05T00:05:29.887 に答える
1

追加データを使用する意図。getExtrasを渡す方が適切であり、親アクティビティには、子アクティビティがいつ終了したかを追跡するための事前定義されたイベントがあります。

于 2012-04-05T00:13:35.517 に答える