2010-08-12 33 views
0

我有一個開始,並在應用程序的主屏幕STOP按鈕。有一些GUI和線程在我點擊START時被實例化。當我點擊停止時,我希望一切都停止,並且活動應該回到其原始狀態。對於像啓動時一樣的狀態(當我們點擊移動設備上的App圖標時)。 可以做到這一點嗎?我嘗試完成(),這殺了應用程序並退出。我不想退出主屏幕。相反,點擊「停止」後,我希望應用程序返回到原始狀態或出生狀態。謝謝。停止或刷新一個應用程序的活動

回答

1

你是如何運行的線程?他們是香草線程還是AsyncTask的子類?

如果這是一個AsyncTask對象的實例,你可以使用cancel()方法來取消它,然後你doInBackground()方法裏面,你可以檢查isCancelled()方法,看它是否確實已經取消,然後退出正常。

僞代碼如下:

private YourTask taskRef; 

public void btnStartHandler() { 
    taskRef = new YourTask(); 
    taskRef.execute(); 
} 

public void btnStopHandler() { 
    taskRef.cancel(); 
} 

,然後在您的AsyncTask:

public Void doInBackground(Void... arg0) { 
    // Background loop start 
    if (this.isCancelled()) { 
     return; 
    } 
    // Background loop continue... 
} 

如果你使用線程,你可以打斷他們,並捕獲異常並處理它。此外,您可以創建一個方法,您從onCreate()調用initApp()或初始化所有內容。您也可以使用STOP按鈕單擊處理程序中的initApp()將值重置爲啓動默認值。

+0

這不是我一直在尋找,沒有這樣的initapp()兩種。 – 2010-08-12 20:29:48

+0

如果您注意,我建議您_create_該方法,並從您的'onCreate()'調用它。更多關於你在做什麼的信息肯定會有助於獲得你正在尋找的答案。 – TJF 2010-08-12 20:31:31

+0

+1爲了補償誰低估了這個內容豐富的答覆。 – hpique 2010-08-12 20:32:21

0

您可以finish()重啓活動,然後調用startActivity(getIntent());。這將有效地重新啓動您的活動並將其置於其默認狀態,無論它是如何啓動的。

這樣做,一定要取消所有線程或AsyncTasks作爲TJF建議之前(你可以和應該做的onDestroy過載)。

有關重新啓動活動的詳細信息,以及有關利弊的討論,看到了這個問題:Reload activity in Android

相關問題