Я не программист Android, но в качестве общего совета я бы сказал, что вы должны выполнить сон, лучше сказать ожидание, в другом потоке и выполнить в конце периода ожидания в основном потоке метод который переключает видимость вашего изображения.
Если говорить более подробно, я бы сказал, что вы должны использовать объект Handler, потому что вы не можете обновлять большинство объектов пользовательского интерфейса в отдельном потоке. Когда вы отправляете сообщение обработчику, оно сохраняется в очереди и выполняется потоком пользовательского интерфейса как можно скорее:
public class MyActivity extends Activity {
// Handler needed for callbacks to the UI thread
final Handler mHandler = new Handler();
// Create runnable for posting
final Runnable mUpdateUIState = new Runnable() {
public void run() {
updateUIState();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
[ . . . ]
}
protected void startToggle() {
// Fire off a thread to do the waiting
Thread t = new Thread() {
public void run() {
Thread.Sleep(5000);
mHandler.post(mUpdateUIState);
}
};
t.start();
}
private void updateUiState() {
// Back in the UI thread -- toggle imageview's visibility
imageview.setVisibility(1 - imageview.getVisibility());
}
}
или, фрагмент более короткой версии,
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
imageview.setVisibility(1 - imageview.getVisibility());
}
}, 5000);
используя метод postDelayed
, который включает задержку в логику публикации сообщения.
person
luvieere
schedule
19.09.2010