예배 규칙서 찾다
android Manifest Manifest.permission Manifest.permission_group android.accessibilityservice AccessibilityService android.accounts Account android.app NotificationManager android.bluetooth BluetoothAdapter BluetoothClass BluetoothClass.Device BluetoothClass.Device.Major BluetoothClass.Service BluetoothDevice BluetoothServerSocket BluetoothSocket android.content SharedPreferences android.database.sqlite SQLiteCursorDriver SQLiteOpenHelper android.graphics Bitmap android.location LocationListener Geocoder GpsStatus GpsStatus.Listener GpsStatus.NmeaListener GpsSatellite android.media AudioFormat AsyncPlayer AudioRecord AudioRecord.OnRecordPositionUpdateListener ThumbnailUtils AudioManager android.net TrafficStats MailTo LocalSocket android.os AsyncTask AsyncTask.Status CountDownTimer Message MessageQueue HandlerThread android.text Html android.util JsonWriter android.view ContextMenu ContextMenu.ContextMenuInfo Display ViewManager View ViewStub ViewTreeObserver ViewParent WindowManager GestureDetector Gravity MenuInflater ScaleGestureDetector SoundEffectConstants android.view.inputmethod InputConnection InputMethod InputMethodSession BaseInputConnection InputMethodManager android.widget AbsListView AbsListView.LayoutParams AbsListView.OnScrollListener AbsListView.RecyclerListener AbsoluteLayout AbsoluteLayout.LayoutParams AbsSeekBar AbsSpinner AdapterView AdapterView.AdapterContextMenuInfo AdapterView.OnItemLongClickListener AdapterView.OnItemSelectedListener AdapterView.OnItemClickListener AnalogClock BaseAdapter BaseExpandableListAdapter Button CheckBox CheckedTextView Checkable Chronometer Chronometer.OnChronometerTickListener CompoundButton CompoundButton.OnCheckedChangeListener CursorAdapter CursorTreeAdapter DatePicker DatePicker.OnDateChangedListener DialerFilter DigitalClock EditText Filter Filter.FilterListener Filter.FilterResults ExpandableListAdapter ExpandableListView.OnChildClickListener ExpandableListView.OnGroupClickListener ExpandableListView.OnGroupCollapseListener ExpandableListView.OnGroupExpandListener Filterable Gallery Gallery.LayoutParams GridView GridLayout GridLayout.Alignment RadioGroup ImageView ImageView.ScaleType HorizontalScrollView ImageButton ImageSwitcher FilterQueryProvider ListAdapter ListView MediaController MultiAutoCompleteTextView MultiAutoCompleteTextView.CommaTokenizer MultiAutoCompleteTextView.Tokenizer QuickContactBadge RadioButton RatingBar RatingBar.OnRatingBarChangeListener RelativeLayout RemoteViews ResourceCursorAdapter ResourceCursorTreeAdapter Scroller ScrollView SearchView SearchView.OnCloseListener SearchView.OnQueryTextListener SearchView.OnSuggestionListener SeekBar SeekBar.OnSeekBarChangeListener SimpleAdapter SimpleAdapter.ViewBinder SimpleCursorAdapter SimpleCursorAdapter.CursorToStringConverter SimpleCursorAdapter.ViewBinder SimpleCursorTreeAdapter SimpleCursorTreeAdapter.ViewBinder SimpleExpandableListAdapter SlidingDrawer SlidingDrawer.OnDrawerCloseListener SlidingDrawer.OnDrawerOpenListener SlidingDrawer.OnDrawerScrollListener Spinner SpinnerAdapter WrapperListAdapter TabHost TabHost.TabSpec TextView TimePicker TimePicker.OnTimeChangedListener Toast TableLayout TableLayout.LayoutParams TableRow TableRow.LayoutParams TabWidget TextSwitcher ToggleButton TwoLineListItem VideoView ViewAnimator ViewFlipper ViewSwitcher ViewSwitcher.ViewFactory ZoomButtonsController ZoomButtonsController.OnZoomListener ZoomButton ZoomControls dalvik.system DexFile
문자


AsyncTask

版本:Android 2.3 r1

结构

继承关系

public abstract classAsyncTaskextendsObject

java.lang.Object

android.os.AsyncTask

类概述

AsyncTask能够适当地、简单地用于UI线程。 这个类不需要操作线程(Thread)就可以完成后台操作将结果返回UI

异步任务的定义是一个在后台线程上运行,其结果是在UI线程上发布的计算。 异步任务被定义成三种泛型类型:ParamsProgressResult;和四个步骤:begin,doInBackgroundprocessProgressend

用法

AysncTask必须被继承使用。子类至少覆盖一个方法(doInBackground(Params...)),最经常覆盖另一个(onPostExecute(Result).)下面是一个子类的例子:

一旦创建,一个任务执行起来就非常简单:

AsyncTask的泛型类型

这三个类型被用于一个异步任务,如下:

1.Params启动任务执行的输入参数

2.Progress后台任务执行的百分比

3.Result,后台计算的结果类型

在一个异步任务里,不是所有的类型总被用。假如一个类型不被使用,可以简单地使用Void类型:

4个步骤

当一个异步任务被执行,任务经过四各步骤:

1onPreExecute(),在UI线程上调用任务后立即执行。这步通常被用于设置任务,例如在用户界面显示一个进度条。

2doInBackground(Params...),后台线程执行onPreExecute()完后立即调用,这步被用于执行较长时间的后台计算。异步任务的参数也被传到这步。计算的结果必须在这步返回,将传回到上一步。在执行过程中可以调用publishProgress(Progress...)来更新任务的进度。

3onProgressUpdate(Progress...),一次呼叫publishProgress(Progress...)后调用UI线程。执行时间是不确定的。这个方法用于当后台计算还在进行时在用户界面显示进度。例如:这个方法可以被用于一个进度条动画或在文本域显示记录。

4onPostExecute(Result),当后台计算结束时,调用UI线程。后台计算结果作为一个参数传递到这步。

线程规则

有一些线程规则必须去遵守,这个类才会正确的工作:

·任务实例必须创建在UI线程

·execute(Params...)必须在UI线程上调用

·不要手动调用onPreExecute(),onPostExecute(Result),doInBackground(Params...),onProgressUpdate(Progress...)

·这个任务只执行一次(如果执行第二次将会抛出异常)

内部类

enum AsyncTask.Status

表示任务的当前状态

构造函数

public AsyncTask ()

创建一个新的异步任务。这个构造函数必须在UI线程上调用。

公共方法

public final booleancancel(boolean mayInterruptIfRunning)

尝试取消这个任务的执行,如果这个任务已经结束或者已经取消或者不能被取消或者某些其他原因,那么将导致这个操作失败,当调用此方法时,此方法执行成功并且这个任务还没有执行,那么此任务将不再执行。如果任务已经开始,这时执行此操作传入的参数mayInterruptIfRunningtrue,执行此任务的线程将尝试中断该任务。

参数

mayInterruptIfRunning如果为true则正在执行的线程将会中断,如果false,则会允许正在执行的任务线程执行完毕。

返回值

如果此任务不能取消返回false,如果已经正常的执行完毕,返回true

参见

isCancelled()

onCancelled()

public final AsyncTaskexecute(Params... params)

用指定的参数来执行此任务,这个方法将会返回此任务本身,所以调用者可以拥有此任务的引用。此方法必须在UI线程中调用

参数

params任务参数

返回值

AsyncTask的实例

异常

IllegalStateException如果getStatus()返回的是RUNNING或者FINISHED

public final Resultget()

等待计算结束并返回结果

返回值

计算结果

异常

CancellationException如果计算取消

ExecutionException如果计算抛出异常

InterruptedException当等待时当前线程抛出异常

public final Resultget(long timeout, TimeUnit unit)

等待计算结束并返回结果,最长等待时间为:timeOut(超时时间).

参数

timeout计算等待超时时间

unit超时的时间单位

返回值

计算结果

异常

CancellationException如果计算取消

ExecutionException如果计算抛出异常

InterruptedException当等待时当前线程抛出异常

TimeoutException等待时间超时

public final AsyncTask.StatusgetStatus()

获得任务的当前状态

返回值

当前状态

public final booleanisCancelled()

如果在任务正常结束之前取消任务成功则返回true,否则返回false

返回值

如果任务正常结束之前取消任务成功返回true

参见

cancel(boolean)

受保护方法

protected abstract ResultdoInBackground(Params... params)

覆盖此方法在后台线程执行计算,此方法中的参数是此任务的execute(Params...)方法的调用这传递的参数,此方法可以调用publishProgress(Progress...)UI线程中来更新数据

参数

params此任务的参数

返回值

返回一个由此任务子类定义的结果Result

参见

onPreExecute()

onPostExecute(Result)

publishProgress(Progress...)

protected voidonCancelled()

此方法在UI线程中当cancel(boolean)被调用后调用

参见

cancel(boolean)

isCancelled()

protected voidonPostExecute(Result result)

此方法在UI线程中doInBackground(Params...)。方法调用之后调用,此方法中的参数的值是doInBackground(Params...)的返回值或者当此任务已经被取消或有异常发生时此参数值为空null

参数

resultdoInBackground(Params...)计算出的操作的结果。

参见

onPreExecute()

doInBackground(Params...)

protected voidonPreExecute()

在方法doInBackground(Params...)调用之前调用

参见

onPostExecute(Result)

doInBackground(Params...)

protected voidonProgressUpdate(Progress... values)

该方法在UI线程中publishProgress(Progress...)被调用之后调用,该方法中的参数values是已经被传递到ppublishProgress(Progress...)中的参数

参数

values进度表示值

参见

publishProgress(Progress...)

doInBackground(Params...)

protected final voidpublishProgress(Progress... values)

当调用doInBackground(Params...)在后台执行计算时会调用该方法,每当在UI线程中调用此方法时将触发onProgressUpdate(Progress...)方法的执行

参数

values将进度值更新到UI

参见

onProgressUpdate(Progress...)

doInBackground(Params...)

补充

文章精选

Android AsyncTask理解

TabActivity下在AsyncTask中使用ProgressDialog存在问题的解决方法

小心,AsyncTask不是萬能的[blogspot]


이전 기사: 다음 기사: