2013-04-09 6 views
0

пример: у меня есть кнопка, если нажать, она вызовет функцию для извлечения данных из API на экран. но как я могу прекратить вызывать функцию, если пользователь снова нажмет и функция все еще работает (Обработка).Android: как прекратить вызов одной функции во время работы функции

вместо того, чтобы скрывать кнопку, есть ли способ ее обработать? мне нужно использовать поток для его обработки? проверить, жив ли поток? Я не знаком с этим. пожалуйста, дайте мне некоторое предложение и пример о том, как справиться с этим.

извините за мой плохой английский. спасибо.

ответ

0

Сделайте boolean, который поворачивает true, когда вы нажимаете кнопку. Когда его истинные выполняют обычные функции метода. Затем сделайте так, когда человек снова нажмет кнопку boolean, повернув false. Когда это ложно, сделайте так, чтобы вы делали то, что хотите, break или return или ничего не делаете.

+0

спасибо за ваш быстрый ответ, я проверю его, потому что функция из фрагмента, и я выполняю функцию из действия. потому что я использую раздвижное меню. в то время как пользователь скользит на левую панель, панель должна обновлять и извлекать данные. поэтому я думаю, что это может сработать для меня. thanksss! – NaiveBz

0

Если функция, которую вы вызываете, синхронизирована, у вас не должно быть никаких проблем. Если функция запускает поток, то вы можете сделать так:

Thread mThrd = null; 
public void func() { 
    if(mThrd!=null && mThrd.isRunning()) { 
     return; 
    } 

    mThrd = new Thread(/*the runnable that do the job*/); 
    mThrd.start(); 
} 

Если функция является рамочным API, который просто «делает что-то в фоновом режиме», это может иметь какой-то способ, чтобы сказать вам, что это выполняется или нет, или вы можете проверить результат с помощью некоторых методов. Как:

public void func() { 
    if(checkDone()) { 
     return; 
    } 
    callFrameworkAPI(); 
} 
+0

оцените ваш быстрый ответ. это может сработать для меня, но для меня это слишком продвигается>. <потому что я не знаком с нитью и все еще новичком в разработке Android. но, однако, я проверю это благодаря! очень ценю. erm, могу ли я знать, как «что-то делать в фоновом режиме»? какое исследование мне нужно сделать для этого? – NaiveBz

+0

Если вы не знакомы с Thread, я предлагаю вам использовать AsyncTask, пожалуйста, взгляните на http://developer.android.com/reference/android/os/AsyncTask.html И когда я говорю что-то делать в фоновом режиме, я например, вы вызываете MediaPlayer.prepareAsync(), игрок будет выполнять задание в фоновом режиме - буферизация и т. д., и после его завершения обратный вызов onPrepared() будет вызван, если вы зарегистрируете прослушиватель. Таким образом, вы можете пометить флаг в функции обратного вызова и использовать его в процедуре checkDone() для вас. – Robin

-1

при вызове функции, добавьте следующие строки в функции, то это будет сделать кнопку unclickable после того, как была нажата один раз.

Button b1 = findViewById(R.id.button_name); 
b1.setClickable(false); 

После апите выборки будет сделан, вероятно, конец функции в вашем случае, добавьте следующие строки, чтобы сделать кнопку снова кликабельна.

b1.setClickable(true); 
Смежные вопросы