1

AsyncTaskから呼び出し元にデータを返す方法には複数のアプローチがあることを認識していますActivityMessageのオブジェクトを使用するHandlerか、同じインターフェイスを実装する (データを渡すメソッドを使用する)両方でInterface-basedアプローチを使用できます。ActivityAsyncTask

そして、publicメソッドを呼び出しActivityてに渡し、フィールドリストに結果データを入力Activityするなど、他のアプローチもあります。または、呼び出し元からのオーバーライドなど。AsyncTaskActivity'sonPostExecuteActivity

さて、メモリ消費量と実行速度の観点から、どのアプローチを使用するのが最適ですか?

注: SO の専門家の評価を取ると、評価が 20,000 以上の人が、MessageまたはInterface-basedアプローチのいずれかを提案していることがわかりました。経験は少ないが 10,000 以上のクレジットを持っている人は、私が言及した 3 番目のソリューションのような別のソリューションを提案しています。彼らのソリューションがどれほど「重い」かについて誰も言及していないため、それが私の混乱の根源です。

4

1 に答える 1

1

活動を渡すことは良いアプローチではありません。それはメモリに負担がかかるためです(すべてのフィールドは以前のアクティビティからメモリにロードされます)。また、2 つのアクティビティを緊密に結び付けます。

最初の 2 つは、シナリオに応じた正しいアプローチです。

  1. メッセージベースの通信は、Android OS のリソースを大量に消費します。受信したメッセージごとに、OS はそれに関連付けられているすべてのハンドラーを探します。これは主に、アクティビティが他のさまざまなアクティビティやアプリケーションの外部のアクティビティと通信する必要がある場合に使用されます。

  2. あなたの場合、インターフェイスベース/コールバックメソッドがより優先されます。アクティビティがより少ないアクティビティとアプリケーション内で通信する必要がある場合。Android OS から消費するメモリと計算オーバーヘッドが少なくなります。

于 2014-06-05T17:11:25.847 に答える