Я предлагаю вам не использовать CountDownTimer для этого случая.
Использовать Handler.postDelayed (Runnable runnable, long delay))
public class yourActivity extends Activity
{
public Handler handler = new Handler();
...
public void hideAfter5Sec()
{
handler.postDelayed(new Runnable()
{
View view = findViewById(view_to_hide);
view.setVisibility(View.INVISIBLE);
}, 5000);
}
}
postDelayed выполнит этокод после 5Sec.
РЕДАКТИРОВАНИЕ:
postDelayed будет вызываться только один раз через 5 секунд через Lopper.loop ().Если есть многократный вызов hideAfter5Sec (), то только вы получите множественный вызов postDelayed.
Если у вас множественный вызов hideAfter5Sec (), я не думаю, что есть какая-то ошибка, потому что hideAfter5Sec () просто скрывает это.так что если это один или несколько, ваш вид будет скрыт.
Если в случае, если вы хотите скрыть только в последнем вызове hideAfter5Sec (), используйте этот вариант.
public class yourActivity extends Activity
{
public Handler handler = new Handler();
public long lastHideAfter5Sec = 0L;
...
public void hideAfter5Sec()
{
lastHideAfter5Sec = System.currentTimeMillis();
handler.postDelayed(new Runnable()
{
if(System.currentTimeMillis() - lastHideAfter5Sec < 5000)
return;
View view = findViewById(view_to_hide);
view.setVisibility(View.INVISIBLE);
}, 5000);
}