2015-12-19 71 views
-1

等待或睡眠......哪種方法適合?Java在我的情況下等待或睡眠

void A() 
{ 
    //Some Code 1 

    some_function(); // calling a method and will seek for a response from other device, communicating on bluetooth 
    //Some code 2 
} 

我希望我的程序等待some_function的過程()。但是此刻它開始執行函數A()的「Some Code 2」部分。

如果有人指定等待方法實施我的情況,

p.s:異步不是我的優先事項。

+0

你有任何的代碼在嘗試的睡覺? – ZombieCode

+0

所需秒數的線程休眠的通用代碼。 –

+1

[閱讀](http://stackoverflow.com/questions/1036754/difference-between-wait-and-sleep) – Skynet

回答

1

既然你想要做異步任務,使線程睡眠可能會凍結用戶界面。即使沒有,它仍然是非常糟糕的做法。

所以第一件事 - 你必須做一個單獨的線程。和Asynctask最適合它。如果它不是在一個單獨的線程上運行(如你所說,它不是Asynctask),而是某些代碼2(如你所說,它不是Asynctask)。但是,如果它運行在一個單獨的線程上(它應該是) - 。

你可以簡單地在some_function()的末尾調用「// Some code 2」。

OR

如果你不想這樣做,嘗試像這個 -

首先將界面 -

public static interface On_some_function_complete{ 

    void onComplete(what ever parameters you want); 

} 

把這個接口的實例在some_function()作爲參數,您可以定義它並在函數結尾調用onComplete方法,例如 -

void some_function(On_some_function_complete arg_on_complere){ 

    //what ever stuff your code dose 

    arg_on_complere.onComplete(/*with required arguments*/); 
} 

現在撥打電話一樣 -

void A() 
{ 
    //Some Code 1 

    some_function(new On_some_function_complete{ 

       @Override 
       public void onComplete(Bitmap result) { 
        //Some code 2 
       } 
      }); 

} 

OR

你必須有一些功能,你可以覆蓋處理的競業行爲

相關問題