android-多線程

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();
    }
}
相關文章
相關標籤/搜索