これはthis post's Questionから続きます。スレッドを追加するにはどうすればよいですか?
サーバーからデータを収集する作業を行うために、メインのUIスレッドから別のスレッドを追加する方法がわかりません。私は前にスレッドを実行したことがないし、私の構築クラスのこのインスタンスは、私が見つけることができる例のいずれかを少し高度にすると思う。
私の授業の助けと投稿された改訂版は高く評価されます。
ありがとうございました!
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
setContentView(R.layout.list_view2);
/**
* Get the query string from last activity and pass it to this
* activity-----------------------------------------------------
*/
String p = null;
if (extras != null) {
p = extras.getString(PHP_KEY);
}
loadQuery(p);
}
void loadQuery(String p) {
String qO = getIntent().getStringExtra("QUERY_ORDER");
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
// http post
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/App/php/" +
p + qO + ".php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
// convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
setListAdapter(new QueryAdapter(this, result));
}
ここでここでTutorial
を使用する方法についての良いチュートリアルがある
:ここではサンプルです//developer.android.com/reference/android/os/Handler.htmlそれは、UIスレッドの外に管理するための最も簡単な方法で、結果やデータをUIスレッドに転送します。 –
Thnx。私はそれを私のコードにコンパイルエラーなしで実装する方法を理解していません。 @ジェレミーD – CelticParser
@ジェレミーD私は知らない。私はhttp://developer.android.com/reference/android/os/AsyncTask.htmlが実際に簡単だと思います。あなたは常にメインスレッドでonPostExecute()を実行することが保証されています。ハンドラはそれを作成したスレッドで実行されます。 – AedonEtLIRA