我需要一個在固定時間(例如每1秒)執行的作業。如何在Android視圖中啓動/停止Timer/AsyncTask
我知道我可以通過Timer
或AsyncTask
執行此操作。
但是我必須在創建視圖時開始工作。但我想知道我能在哪裏停止這項工作?由於我沒有找到android.view.View
的生命週期。
什麼是替代解決方案?
我有一個可以被其他人使用的自定義視圖,我要開始一個Timer
或AsyncTask
一旦視圖的重點是,當觀點是無形停止後臺作業。
我需要一個在固定時間(例如每1秒)執行的作業。如何在Android視圖中啓動/停止Timer/AsyncTask
我知道我可以通過Timer
或AsyncTask
執行此操作。
但是我必須在創建視圖時開始工作。但我想知道我能在哪裏停止這項工作?由於我沒有找到android.view.View
的生命週期。
什麼是替代解決方案?
我有一個可以被其他人使用的自定義視圖,我要開始一個Timer
或AsyncTask
一旦視圖的重點是,當觀點是無形停止後臺作業。
由於您的activity
具有View實例,請根據您的要求調用方法View
以讓知道視圖類的活動被銷燬或停止。
private View mView;
public void onDestroy {
super.onDestroy();
mView.stopCounter();
}
public void onStop() {
super.onStop();
mView.stopCounter();
}
public class A extends AsyncTask<Void,Void,Void>
{
void doInBackground(..)
{
do
{
Thread.sleep(1000);
//Your Work
}while(condition);
}
}
如果你想停止活動返回一個布爾值onPostExecute阻止你在做什麼工作。
看看你可以覆蓋的方法。
onWindowVisibilityChanged
和onWindowFocusChanged
看起來有幫助。
@Override
protected void onWindowVisibilityChanged(int visibility)
{
super.onWindowVisibilityChanged(visibility);
switch(visibility)
{
case VISIBLE: /* code */ break;
case INVISIBLE: /* code */ break;
case GONE: /* code */ break;
}
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus)
{
super.onWindowFocusChanged(hasWindowFocus);
}
它是什麼類型的應用程序?爲什麼你需要知道某個'View'的「生命週期」?你的意思是「活動」嗎? – mrres1
我不是說'活動'。因爲我在自定義視圖的構造函數上創建了一個計時器,所以在處理視圖時我必須停下來。 – hguser
所以'Activity'會繼續運行,但'View'會被銷燬?這是什麼類型的視圖?它是如何顯示的。解釋你的程序。 – mrres1