android寮傛杩炴帴鏁版嵁搴撴€庝箞瀹炵幇
鍦ˋndroid涓紝鍙互浣跨敤浠ヤ笅鍑犵鏂瑰紡瀹炵幇寮傛杩炴帴鏁版嵁搴擄細
- 浣跨敤AsyncTask绫伙細AsyncTask鏄疉ndroid鎻愪緵鐨勪竴涓畝鍗曠殑寮傛浠诲姟绫伙紝鍙互鍦ㄥ悗鍙扮嚎绋嬩腑鎵ц鏁版嵁搴撹繛鎺ユ搷浣溿€傚湪AsyncTask绫荤殑doInBackground()鏂规硶涓墽琛屾暟鎹簱杩炴帴鎿嶄綔锛岀劧鍚庡湪onPostExecute()鏂规硶涓鐞嗚繛鎺ョ粨鏋溿€?/li>
绀轰緥浠g爜锛?/p>
private class ConnectDatabaseTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
// 鍦ㄥ悗鍙扮嚎绋嬩腑鎵ц鏁版嵁搴撹繛鎺ユ搷浣?/span>
// ...
return null;
}
protected void onPostExecute(Void result) {
// 澶勭悊杩炴帴缁撴灉
// ...
}
}
// 鍒涘缓骞舵墽琛屽紓姝ヤ换鍔?/span>
new ConnectDatabaseTask().execute();
- 浣跨敤Handler鍜孴hread绫伙細浣跨敤Handler鍜孴hread绫诲彲浠ュ湪鍚庡彴绾跨▼涓墽琛屾暟鎹簱杩炴帴鎿嶄綔锛屽苟閫氳繃Handler灏嗙粨鏋滃彂閫佸埌涓荤嚎绋嬭繘琛屽鐞嗐€?/li>
绀轰緥浠g爜锛?/p>
Handler handler = new Handler() {
public void handleMessage(Message msg) {
// 澶勭悊杩炴帴缁撴灉
// ...
}
};
Thread thread = new Thread(new Runnable() {
public void run() {
// 鍦ㄥ悗鍙扮嚎绋嬩腑鎵ц鏁版嵁搴撹繛鎺ユ搷浣?/span>
// ...
// 杩炴帴缁撴灉閫氳繃handler鍙戦€佸埌涓荤嚎绋?/span>
handler.sendEmptyMessage(0);
}
});
// 鍚姩绾跨▼
thread.start();
- 浣跨敤RxJava搴擄細RxJava鏄竴涓熀浜庤瀵熻€呮ā寮忕殑寮傛缂栫▼搴擄紝鍙互鏂逛究鍦板疄鐜板紓姝ヨ繛鎺ユ暟鎹簱鎿嶄綔銆?/li>
绀轰緥浠g爜锛?/p>
Observable.create(new Observable.OnSubscribe<Void>() {
@Override
public void call(Subscriber<? super Void> subscriber) {
// 鍦ㄥ悗鍙扮嚎绋嬩腑鎵ц鏁版嵁搴撹繛鎺ユ搷浣?/span>
// ...
subscriber.onNext(null);
subscriber.onCompleted();
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Void>() {
@Override
public void onNext(Void aVoid) {
// 澶勭悊杩炴帴缁撴灉
// ...
}
@Override
public void onError(Throwable e) {
// 澶勭悊杩炴帴閿欒
// ...
}
@Override
public void onCompleted() {
}
});
浠ヤ笂杩欎簺鏂规硶閮藉彲浠ョ敤鏉ュ疄鐜板紓姝ヨ繛鎺ユ暟鎹簱锛屼笉鍚岀殑鏂规硶閫傜敤浜庝笉鍚岀殑鍦烘櫙鍜岄渶姹傘€傞€夋嫨鍚堥€傜殑鏂规硶鍙栧喅浜庡叿浣撶殑椤圭洰闇€姹傚拰涓汉鍋忓ソ銆?/p>