2012-10-29 40 views
3

我有一個需要退出時 - 保存的東西做的事情到數據庫活性的 - 啓動活動B優先處理新的活動

由於儲蓄可能需要一段時間,不過,我覺得我應該開始一個新的線程有數據庫訪問在後臺運行,而用戶正在忙於讀取活動B的內容。(B不使用保存的數據btw)。

所以我有活動A

FinishStuff(){ 
Intent ourIntent = new Intent(this, ActivityB.class); 
startActivity(ourIntent); 

handler = new Handler(); 
handler.post(dbSaver); 
} 
public Runnable dbSaver = new Runnable() { 

@Override 
public void run() { 
    saveToDbs(); 
} 

Howevever,什麼情況是,活動B的OnCreate中()立即調用,但是屏幕空間,我的新的活動應該是黑色的,直到saveToDBs()完成活動B在哪個階段顯示。 有什麼辦法解決這個問題? TIA

回答

1

您誤以爲HandlerThread

線程可以使用Handler在另一個線程中運行一段代碼(即更新UI,通知進度等),並且您需要的是一個新線程。

所以,你需要更換:

handler = new Handler(); 
handler.post(dbSaver); 

由:

new Thread(dbSaver).start(); 

問候。

+0

工作了一段時間,我假設可運行的實現足以創建一個線程行爲。 – user1654757

0

不過,我覺得我應該開始一個新的線程有在研究背景

正確運行的數據庫訪問。但是,您並未在上面顯示的代碼中啓動新線程。

+0

好吧,我接受了我開始的線索的答案,請讓我進入祕密。 – user1654757

+0

@ user1654757:嗯,什麼祕密?你還沒有開始線程。要做到這一點,你可以使用'Thread',或者其他一些圍繞線程的東西,比如'AsyncTask'。 – CommonsWare