AsyncTask Example Code
AsyncTask ช่วยให้การใช้งาน UI Thread ได้ง่ายขึ้น
จะช่วยในด้านการทำงานเบื้องหลัง และ สั่งงาน
UI โดยไม่ต้องใช้
Thread และ
Handler จนมากเกินไป
AsyncTask ถูกออกแบบมาให้ช่วย
Thread และ
Handler และไม่ทำให้เกิดบัก
AsyncTasks ควรที่จะใช้งาน ในการดำเนินงานระยะสั้น
(ไม่กี่วินาที ) ถ้าคุณต้องการที่จะใช้โปรแกรม ในการทำงานเป็นระยะเวลานานๆ ก็ควรจะใช้
APIs ใน pacakge java.util.concurrent เช่น
Executor
, ThreadPoolExecutor
และ FutureTask
.
Asynchronous
Task มี 3 ประเภท
Params
, Progress
และ Result
และมี 4 ขั้นตอน
onPreExecute
, doInBackground
, onProgressUpdate
และ onPostExecute
.
AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.
AsyncTask is designed to be a helper class around
Thread
and Handler
and does not constitute a generic threading framework. AsyncTasks should ideally be used for short operations (a few seconds at the most.) If you need to keep threads running for long periods of time, it is highly recommended you use the various APIs provided by the java.util.concurrent
pacakge such as Executor
, ThreadPoolExecutor
and FutureTask
.
An asynchronous task is defined by a computation that runs on a background thread and whose result is published on the UI thread. An asynchronous task is defined by 3 generic types, called
Params
, Progress
and Result
, and 4 steps, called onPreExecute
, doInBackground
, onProgressUpdate
and onPostExecute
.
This code will downlaod form URL then show ProgressBar Dialog.
when download finish, file in the /sdcard/ folder.
package
android.example.asynctask;
import
java.io.BufferedInputStream;
import
java.io.FileOutputStream;
import
java.io.InputStream;
import
java.io.OutputStream;
import
java.net.URL;
import
java.net.URLConnection;
import
android.os.AsyncTask;
import
android.os.Bundle;
import
android.os.StrictMode;
import
android.app.Activity;
import
android.app.Dialog;
import
android.app.ProgressDialog;
import
android.util.Log;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
public class
MainActivity extends Activity {
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
private Button startBtn;
private
ProgressDialog mProgressDialog;
private String URLDownload;
private EditText txtURL;
@Override
public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtURL = (EditText)findViewById(R.id.editText1);
txtURL.setText("http://www.digital2u.net/media/Android/SourcecodeBeginningAndroid.zip");
String
path = "/sdcard/";
// Permission StrictMode
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
// btnDownload
startBtn =
(Button)findViewById(R.id.btnDownload);
startBtn.setOnClickListener(new
OnClickListener(){
public void
onClick(View v) {
startDownload();
}
});
}
private void
startDownload() {
URLDownload = txtURL.getText().toString();
new
DownloadFileAsync().execute(URLDownload);
}
@Override
protected Dialog
onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_PROGRESS:
mProgressDialog = new
ProgressDialog(this);
mProgressDialog.setMessage("Downloading
file..");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}
class
DownloadFileAsync extends AsyncTask<String, String, String> {
@Override
protected void
onPreExecute() {
super.onPreExecute();
}
@Override
protected String
doInBackground(String... aurl) {
int count;
try {
URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();
int
lenghtOfFile = conexion.getContentLength();
Log.d("ANDRO_ASYNC", "Lenght of file: " +
lenghtOfFile);
InputStream input = new
BufferedInputStream(url.openStream());
// Get
File Name from URL
String fileName = URLDownload.substring( URLDownload.lastIndexOf('/')+1, URLDownload.length() );
OutputStream output = new FileOutputStream("/sdcard/"+fileName);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress(""+(int)((total*100)/lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {}
return null;
}
protected void
onProgressUpdate(String... progress) {
Log.d("ANDRO_ASYNC",progress[0]);
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void
onPostExecute(String unused) {
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.example.asynctask"
android:versionCode="1"
android:versionName="1.0"
>
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15"
/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<activity
android:name="android.example.asynctask.MainActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Download AsyncTask Example Code
สอนเขียน Android สอนเขียนโปรแกรม Android แบบ Online
รับสอนเขียนโปรแกรม Android App สอนแบบ online สอนสด ตัวต่อตัว หรือ เป็นกลุ่ม ได้ทั่วประเทศ กำหนดเวลาเรียนได้
การเรียน Android App แบบ online สามารถกำหนดเวลาเรียน เองได้ ตามแต่ตกลงกัน
( รับสอน นอกสถานที่ แบบเป็น กลุ่ม ทั่วประเทศ )
แต่ละ Course ขึ้นอยู่กับพื้นฐานที่มี นะครับ
Course
1.JAVA Programming สำหรับผู้ที่ยังไม่มีพื้นฐานทางด้าน การเขียนโปรแกรม JAVA
เรียน 3-4 ครั้ง ครั้งละ 2 ชั่วโมง
2.Beginning Android Development เริ่มต้นการพัฒนาด้วย Android ( ต้องมีพื้นฐาน JAVA แล้ว )
เรียน 5-6 ครั้ง ครั้งละ 2 ชั่วโมง
เรียนจบคอร์สนี้ ก็สามารถทำ Application ได้แล้ว
3.Android Application สอนตามความต้องการในการเขียนโปรแกรม ใช้งานจริง เช่น โปรแกรมใช้งานด้านต่างๆ
ระยะเวลา และ ค่าเรียน ตามแต่ความยากง่ายของโปรแกรม ซึ่งอาจจะรวมสอน JAVA Programming ด้วยสำหรับผู้เริ่มต้นเลย
ดังนั้น ราคาสอน จะขึ้นอยู่กับ สเปคงาน
โปรแกรมที่ใช้ทำการเรียน Team Viewer Version ล่าสุด Version 8
Meeting ID จะแจ้งให้ก่อนเรียน ผ่านทาง email sms Line หรือ อื่นๆ ตามสะดวก
ใช้ Tab Meeting ใส่ Meeting ID และใส่ชื่อ
แล้ว Join Meeting
ติดต่อ amphancm@gmail.com
ติดต่อ amphancm@gmail.com