2013-04-30 33 views
0

在我的應用程序中,我嘗試設置超時函數,我無法在單獨的類中調用處理程序方法。如何從Android中的獨立類調用處理程序?

我超時類

public class Timeout_function { 

private Handler mHandler; 
Activity activity; 

public Timeout_function(Activity activity,Handler mHandler) { 
    super(); 
    this.activity = activity; 
    this.mHandler = mHandler; 
} 

Runnable myTask = new Runnable() { 
    @Override 
    public void run() { 
     Toast.makeText(activity, "Test", 1000).show(); 
     mHandler.postDelayed(this, 1000); 
    } 
}; 

// just as an example, we'll start the task when the activity is started 
public void onStart() { 
    mHandler.postDelayed(myTask, 1000); 
} 

// at some point in your program you will probably want the handler to stop 
// (in onStop is a good place) 
public void onStop() { 

    mHandler.removeCallbacks(myTask); 
} 
} 

主類 在主類中我打電話這樣的方法,但它顯示了在運行時錯誤,

Timeout_function timeout = new Timeout_function(this, mHandler); 
    timeout.onStart(); 

如何調用主類中的方法。任何人都知道請幫我解決這個問題。

+0

你是什麼意思的「處理函數」,因爲你的'mHandler'是一個對象。另外,你爲什麼認爲你不能打電話?另外,你的架構是什麼?代碼調用哪個應該與'Handler'交互? – 2013-04-30 07:43:39

+0

@ClassStacker如何開始與處理程序的交互。 – Yugesh 2013-04-30 07:47:12

+0

我相信你已經從一個Activity中提取了這段代碼,其中'onStart'將作爲'Activity'生命週期的一部分被調用。它沒有這樣做,所以現在你必須自己調用onStart。 – 2013-04-30 07:54:31

回答

0

而不是創建一個單獨的類爲什麼你不使用Service

我會堅持讓你通過電話startService(intent);

在服務onStartCommand()使用服務並啓動使用處理器可運行,你可以通過將其內部服務onDestroy()方法和stopService(intent)呼籲停止使用處理器了Runnable。

這就是我所做的,它就像一個魅力!

+0

我對這個概念很陌生,如何在我的應用程序中實現服務。 – Yugesh 2013-04-30 09:03:08

+0

請谷歌爲此,你會發現在Android中創建服務的噸的例子。 – 2013-04-30 09:04:39

相關問題