2011-04-20 53 views
0

我正在執行程序中的互聯網訪問檢查。我想做一個功能,導致這種檢查需要經常發生......但我的原始功能必須返回,因爲屏幕需要刷新。這是我的:召回功能

public void isOnline(Runnable Rcallback, Ccallback) { 

     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     boolean checkState = cm.getActiveNetworkInfo().isConnectedOrConnecting(); 

     if(checkState) { 
      isOnline = true; 
      if(Rcallback != null) Rcallback.run(); 
      if(Ccallback != null) set;} 
     else { 
      isOnline = false; 
      Toast.makeText(gMain.this, R.string.nointernet, Toast.LENGTH_LONG).show(); 
      Handler reTry = new Handler(); 
       reTry.postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        isOnline(callback) ; 
       } 
      },3000); 
     } 



     } 

我真的問題是在Ccallback它是一個函數,當程序變爲聯機時回調。我不知道如何將函數聲明爲「變量」。有任何想法嗎?

回答

1

您應該使用Observer Pattern設置偵聽器。這將允許你告訴任何人標記爲聽衆(可能是你的用戶界面),你已經完成。在這種情況下,東西已連接。

這樣做時要牢記的一件事就是要確保在UI上做事情時,您處於事件線程中。

+0

非常感謝。我現在沒時間去嘗試,但我會在明天做,並在稍後發佈結果。 – bruno 2011-04-20 21:44:56