AsyncTaskapp
public class MyAsyncTask extends AsyncTask<String, Integer, Integer> { @Override protected void onProgressUpdate(Integer... values) { // 更新進度條通知或其它UI元素 super.onProgressUpdate(values); } @Override protected void onPostExecute(Integer result) { // 經過UI更新、對話框或通知報告結果 super.onPostExecute(result); } @Override protected Integer doInBackground(String... params) { int myProgress = 0; // 執行後臺處理任務,更新myProgress for (int i = 0; i < 10; i++) { myProgress++; publishProgress(myProgress); } // 返回將傳遞給onPostExecute return myProgress; } } public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //執行一個異步任務 new MyAsyncTask().execute("inputString1","inputString2"); } }
Thread異步
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //執行一個異步任務 Thread thread = new Thread(null, doBackgroundThreadProcessing, "Background"); thread.start(); } private Runnable doBackgroundThreadProcessing = new Runnable() { @Override public void run() { // TODO Auto-generated method stub backgroundThreadProcessing(); } }; private Handler handler = new Handler(); private void backgroundThreadProcessing() { // TODO 在這完成耗時的工做 //將更新從後臺發送到用戶界面上,方法1:post方法完成返回到主線程 handler.post(doUpdateGUI); //方法2:runOnUiThread this.runOnUiThread(new Runnable() { @Override public void run() { updateGUI(); } }); } private Runnable doUpdateGUI = new Runnable() { public void run() { updateGUI(); }; }; private void updateGUI() { Context context = getApplicationContext(); String msg = "To health and happiness!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, msg, duration); toast.show(); } }