เนื่องจาก Google ได้มีการบังคับ ThreadPolicy ที่เกี่ยวกับการติดต่ออินเตอร์เน็ตไม่ให้สามารถทำงานตรงๆบน UI Thread ได้ต้องใช้ AsyncTask และ doInBackground เข้ามาใช้งานด้วย ตัวอย่าง
private class requestHttpTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
if(execute.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
//http ok///
}
} catch (Exception e) {
//e.printStackTrace();
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
//textView.setText(result);
}
}
วิธีเรียกใช้งาน
requestHttpTask task = new requestHttpTask();
task.execute(new String[] { "http://www.tonnark.com" });
อ้างอิงจาก
http://www.elvenware.com/charlie/development/android/SimpleHttpGetThread.html
Monday, September 9, 2013
Tuesday, September 3, 2013
Android คำสั่ง finish(); และ System.exit(0);
คำสั่ง finish() จะเป็นแค่การบอกว่าจบการทำงานแล้ว แต่ถ้าในโปรแกรมของเรายังรัน service หรือ Listener ใดๆอยู่ โปรแกรมก็จะยังทำงานต่อไปจนกว่าจะจบ service หรือ Listener นั้น
ดังนั้นบางคนที่ใช้คำสั่ง finish() แล้วยังสงสัยว่าทำไมโปรแกรมยังรันเบื้องหลังอยู่ไม่ยอมปิดจริงๆ ก็เพราะสาเหตนี้
ส่วนคำสั่ง System.exit(0) จะเป็นการบังคับให้โปรแกรมหยุดทำงานทันทีไม่ว่าจะมี service หรือ Listener ใดๆอยู่ก็ตาม เปรียบเหมือนการ force close ซึ่งในการใช้งานต้องระวังให้มากและต้องแน่ใจว่าไม่มีโพรเซสใดค้างอยู่แล้วไม่งั้นอาจทำให้โปรแกรม error ได้ เช่นมีคำสั่ง save หรือเขียนข้อมูลอยู่ซึ่งยังทำไม่เสร็จแล้วใช้คำสั่ง System.exit(0) จะทำให้การเซฟนั้นไม่สมบูรณ์และไฟล์ข้อมูลอาจเสียหายได้
ดังนั้นบางคนที่ใช้คำสั่ง finish() แล้วยังสงสัยว่าทำไมโปรแกรมยังรันเบื้องหลังอยู่ไม่ยอมปิดจริงๆ ก็เพราะสาเหตนี้
ส่วนคำสั่ง System.exit(0) จะเป็นการบังคับให้โปรแกรมหยุดทำงานทันทีไม่ว่าจะมี service หรือ Listener ใดๆอยู่ก็ตาม เปรียบเหมือนการ force close ซึ่งในการใช้งานต้องระวังให้มากและต้องแน่ใจว่าไม่มีโพรเซสใดค้างอยู่แล้วไม่งั้นอาจทำให้โปรแกรม error ได้ เช่นมีคำสั่ง save หรือเขียนข้อมูลอยู่ซึ่งยังทำไม่เสร็จแล้วใช้คำสั่ง System.exit(0) จะทำให้การเซฟนั้นไม่สมบูรณ์และไฟล์ข้อมูลอาจเสียหายได้
Subscribe to:
Comments (Atom)