asynctask--Asynchronous task personally think this is a better translation. Class overview//Classes Overview 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 have to manipulate threa DS and/or handlers. Asynchronous tasks are more appropriate and simple to use in the UI thread, which allows a background operation to be performed and results are published to the UI thread without the need to manipulate threads and handler. An asynchronous task was defined by a computation this runs on a background thread and whose result was published on the UI Thread. An asynchronous task was defined by 3 generic types, called Params , Progress and Result , and 4 steps, called onPreExecute , doInBackground , onProgressUpdate and onPostExecute . An asynchronous task is defined in the operation of the UI thread that runs the background thread and the result return value, an asynchronous task that defines 3 generics, invokes the incoming parameter, executes the progress and executes the result, and calls these 4 steps: onPreExecute , and doInBackground onProgressUpdate onPostExecute . Asynctask ' s generic types//generic parameters for asynchronous tasksThe three types used by an asynchronous task is the following: The three types that are called by an asynchronous task are as follows
Params The type of the parameters sent to the task upon execution.//parameter, this parameter will be sent to the execution body
Progress , the type of the progress units published during the background computation.//progress, during the background operation this parameter will be continuously released
Result The type of the result of the background computation.//results in background operation results
Not all types is always used by an asynchronous task. To mark a type as unused, simply use the type Void : Not all types are to be used on asynchronous tasks, or they can be flagged as not needed and the parameter type changed to void. Private class mytask extends asynctask<Void, void, void> { ... }< /c6> The 4 steps//four partsWhen a asynchronous task is executed, the task goes through 4 steps://as an asynchronous task executes, will walk
-
OnPreExecute () , invoked on the UI thread immediately after the task is executed. This step is normally used to setup the task, for instance by showing a progress bar in the user interface.//this method is called in the UI thread in either Call this function as soon as the service executes. This step usually sets a task, for example, to display a progress bar.
-
doinbackground (Params ...) , invoked on the background thread immediately after OnPreExecute () finishes executing. This step was used to perform background computation the can take a long time. The parameters of the asynchronous task is passed to this step. The result of the computation must is returned by this step and would be passed the last step. This step can also use publishprogress (Progress ...) to publish one or more units of progress. These values is published on the UI thread, in the onprogressupdate (Progress ...) step.//This method is executed at OnPreExecute () executes the method immediately, which is used to perform a time-consuming task, and the parameters of the async task params are passed to this step. The result of the execution must be returned in this step and back to the last step, onpostexecute (Result). You can also use Publishprogress () to publish one or more of your progress here. These values will be in onprogressupdate (Progress ...) method, routed to UI thread
onProgressUpdate(Progress...) , invoked the UI thread after a call to publishProgress(Progress...) . The timing of the execution is undefined. This method was used to display any form of progress in the user interface and the background computation is still execut Ing. For instance, it can is used to animate a progress bar or show logs in a text field.//this step to note, this method is called in publishProgress(Progress...)方法后,如果步调用 publishprogress () will not take a step oh. This method can display the progress of any style on the UI when the background task is still executing. For example, it can be used to update a progress bar, or to display text-based logs.
onPostExecute(Result) , invoked on the UI thread after the background computation finishes. The result of the background computation is passed to this step as a parameter.//called when the asynchronous task finishes executing. The results of the execution are passed to this step as parameters.
Threading rules//Threading RulesThere is a few threading rules that must being followed for this class to work properly: This exhaustion must conform to the following rules in order to execute correctly
- The task instance must be created the instance of the UI thread.//task must be built on the UI thread
execute(Params...) Must be invoked on the UI Thread.//execute () must also be called on the UI thread
onPreExecute() don't call,, onPostExecute(Result) , doInBackground(Params...) onProgressUpdate(Progress...) manually. Don't manually have to invoke these several methods:, onPreExecute() , onPostExecute(Result) doInBackground(Params...) , onProgressUpdate(Progress...) .
- The task can be executed just once (an exception would be a thrown if a second execution is attempted.)//This task can be executed only once (if an attempt is made to the second time will throw an exception).
Memory observability//RAM ObservationAsynctask guarantees that all callback calls is synchronized in such a by that the following operations is safe without Explicit synchronizations. The asynchronous task must ensure that all callbacks are thread-safe and synchronized.
- Set member The constructor or
onPreExecute() , and refer to them in doInBackground(Params...) .
- Set member
doInBackground(Params...) in, and refer to them in and onProgressUpdate(Progress...) onPostExecute(Result) .
|