6 か月前、C#/.NET のバックグラウンドを持つ Android 開発を開始しました。
現在使用している最初のオプションは、非同期タスクを実行するためのAsyncTaskです...この場合は Web サービスを消費しています...
サンプルコードは
public class AsyncHttpRequestManager extends AsyncTask<String, Boolean, String> {
private final String serviceUrl = "URL HERE";
@Override
protected String doInBackground(String... params) {
try {
DefaultHttpClient client = new DefaultHttpClient();
HttpPut putRequest = new HttpPut(serviceUrl);
putRequest.setHeader("Content-type", "text/plain");
putRequest.setHeader("Accept", "text/plain");
putRequest.setEntity(new StringEntity(params[0]));
HttpResponse response = client.execute(putRequest);
InputStream content = response.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String result = "";
String s = "";
while ((s = buffer.readLine()) != null) {
result += s;
}
return result;
}
catch (UnsupportedEncodingException e) {
Log.e("AsyncOperationFailed", e.getMessage());
e.printStackTrace();
} catch (ClientProtocolException e) {
Log.e("AsyncOperationFailed", e.getMessage());
e.printStackTrace();
} catch (IOException e) {
Log.e("AsyncOperationFailed", e.getMessage());
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
Log.d("MESSAGE", result);
}
}
これについてブログ記事を書きました。
さらに、進行状況/読み込みダイアログを表示するには、AsyncTask で onPreExecute および onPostExecute メソッドをオーバーライドする必要がある場合があります。ドキュメントを確認してください。
2つ目の方法は、Apache の HttpClient ライブラリの上に構築された Android 用の非同期コールバック ベースの Http クライアントであるloopj ライブラリを使用することです。
loopj を利用したコード例は次のとおりです。
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("username","password/token");
client.get("http://www.example.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
}
});
時間の経過とともに、HttpClient を介してヘルパーを作成したため、最初のステップをすばやく上るのに本当に役立つ loopj などのオープン ソース ライブラリを使用することをお勧めします。唯一の課題は、別のプラットフォームから来たときに、単純な AsyncTask ではなく、他のライブラリで最初の課題に直面する可能性があることですが、柔軟性があれば時間を費やす価値があります。