AsyncTask คืออะไร?
AsyncTask นั้นเป็น abstract class ที่ทาง Android นั้นจัดเตรียมมาให้เราเพื่อทำการประมวลผล หรือทำงานเป็น background โดยไม่ต้องไปยุ่งกับตัว UI หลัก อย่างเช่น กรณีต้องการดึง content จากเว็บไซต์เว็บหนึ่ง เพื่อมาแสดงบนแอพพลิเคชันของเรา โดยไม่กระทบกับหน้าจอ UI ของเรา
เมื่อ AsyncTask ทำงานเสร็จ ค่อยส่งผลลัพธ์ออก UI ด้วยเมธอด onPostExecute()
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context=".MainActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onClick" android:text="Click" /> </LinearLayout> |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com.phaisarn.myapplication; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; public class MainActivity extends AppCompatActivity { private String LOG = "phaisarn"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View view) { Log.d(LOG, "-----------------------------------"); //new HttpTask().execute("http://phaisarn.com"); new HttpTask().execute("http://phaisarn.com", "http://jack.phaisarn.com"); } private class HttpTask extends AsyncTask<String, Integer, String> { protected String doInBackground(String... params) { Log.d(LOG, params[0]); Log.d(LOG, params[1]); return "result"; } protected void onProgressUpdate(Integer... values) { } protected void onPostExecute(String result) { } } } |
บรรทัดที่ 21 : เรียกใช้ HttpTask แบบส่งพารามิเตอร์ไป 1 ตัว
บรรทัดที่ 22 : เรียกใช้ HttpTask แบบส่งพารามิเตอร์ไป 2 ตัว
บรรทัดที่ 28 : เขียน log แสดงค่าของพารามิเตอร์ตัวที่ 1
บรรทัดที่ 29 : เขียน log แสดงค่าของพารามิเตอร์ตัวที่ 2
Run
เมื่อรันแล้วกดปุ่ม ดูที่ Logcat จะเห็นแบบนี้
[code]
09-14 15:07:53.983 18634-18634/com.phaisarn.myapplication D/phaisarn: ———————————–
09-14 15:07:53.986 18634-18816/com.phaisarn.myapplication D/phaisarn: http://phaisarn.com
09-14 15:07:53.988 18634-18816/com.phaisarn.myapplication D/phaisarn: http://jack.phaisarn.com
[/code]
Link