2016-06-23 3 views
1

今日私は、いくつかのデータベースデータをAndroidアプリケーションに配信しなければならない場所で試験を行い、AsyncTaskクラスを使用してサーバーにコールして、ドメイン固有の要求データを提供するソケットプロトコルを作成しました。しかし、私の先生は、AsyncTaskクラスは時代遅れで、問題を解決する別の方法があると私に言った。 AsyncTaskクラス、ドメインクラス、およびsoket通信を使用せずに問題を解決できる方法を教えてください。AsyncTask better communication protocol

おかげ

+1

AsyncTaskは非推奨または廃止されていません。多分あなたは間違って理解したでしょう。 –

+0

ドキュメントは[Performing Network Operations](https://developer.android.com/training/basics/network-ops/index.html)に続きます。明示的にソケットオブジェクトを開いたかどうかは不明です。 –

答えて

0

あなたは "Volley" または "OkHttp" のようないくつかのhttpリクエストライブラリを使用することができます(私のお気に入り)

このように通信するために独自のサーバーAPIを作成します。

  • 電話をWeb APIにHTTPリクエストを送る - > Web APIリクエスト、処理、呼び出しデータベースを受信

  • データベースの応答とWeb APIにデータを送信する - >ウェブAPIは、データベースの応答を取得し、あなたの携帯電話に送る - >お使いの携帯電話あなたはのためJSONまたはXMLを使用することができます

データを受け取りますデータ転送(簡素化のためにJsonを好む)

アンドロイドWikiによると、「AsyncTask」は推奨されていません。

1

AsyncTaskは廃止されていません(廃止予定もありません)が、永続ソケット通信には適していない可能性があります。 AsyncTaskは、比較的短期間の操作(スレッドの処理後に進行状況や完了時にUIを変更する操作など)に適しています。 AsyncTaskを使用してUIを変更できるので、ほとんどの人はAsyncTaskActivityまたはその一部のViewに関連付けます。これは設定変更によってActivityが破壊されて再作成される可能性があるため問題になる可能性があります。 AsyncTask全体がActivityコンテキストを保持しているメモリに存在します。

永続ソケットのようなものはを使用するほうが良いでしょう。これはActivityのような設定変更を行わない別のアプリケーションコンポーネントです。また、ライフサイクルを異なる方法で管理することもできますが、Activityライフサイクルは主にユーザー操作によって決まります。

0

TCP/UDPプロトコルを使用して状態を完全に作成する必要があります。どちらもscoketプログラミングを実装すると、アンドロイドクライアントにデータを渡すことができます。 GCMを使用してGoogleメッセージング(GCM)を使用して、アンドロイドアプリケーションにデータを送信することもできます。または、ソケットプログラミングにOpen fireを使用することもできます。