2013-05-20 38 views
0

我需要一個在固定時間(例如每1秒)執行的作業。如何在Android視圖中啓動/停止Timer/AsyncTask

我知道我可以通過TimerAsyncTask執行此操作。

但是我必須在創建視圖時開始工作。但我想知道我能在哪裏停止這項工作?由於我沒有找到android.view.View的生命週期。

什麼是替代解決方案?


我有一個可以被其他人使用的自定義視圖,我要開始一個TimerAsyncTask一旦視圖的重點是,當觀點是無形停止後臺作業。

+0

它是什麼類型的應用程序?爲什麼你需要知道某個'View'的「生命週期」?你的意思是「活動」嗎? – mrres1

+0

我不是說'活動'。因爲我在自定義視圖的構造函數上創建了一個計時器,所以在處理視圖時我必須停下來。 – hguser

+0

所以'Activity'會繼續運行,但'View'會被銷燬?這是什麼類型的視圖?它是如何顯示的。解釋你的程序。 – mrres1

回答

0

由於您的activity具有View實例,請根據您的要求調用方法View以讓知道視圖類的活動被銷燬或停止。

private View mView; 
public void onDestroy { 
    super.onDestroy(); 
    mView.stopCounter(); 
} 

public void onStop() { 
    super.onStop(); 
    mView.stopCounter(); 
} 
0
public class A extends AsyncTask<Void,Void,Void> 
{ 
    void doInBackground(..) 
    { 
     do 
     { 
      Thread.sleep(1000); 
      //Your Work 
     }while(condition); 
     } 
} 

如果你想停止活動返回一個布爾值onPostExecute阻止你在做什麼工作。

0

看看你可以覆蓋的方法。

onWindowVisibilityChangedonWindowFocusChanged看起來有幫助。

@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); 
} 
相關問題