Как вызвать другое действие после определенного срока

Как указать лимит времени для вызова одного вида деятельности для другого действия. Я хочу вызвать другое действие (Ex, вызывающее класс A в класс B), задав некоторый временной интервал. Я использовал alarmManager, но это не возможно для моего приложения, и я использовал потоки, всякий раз, когда я даю Thread.sleep, он не будет выполнять действия до тех пор, пока сон не закончится. Я не уверен, как это сделать. Может ли кто-нибудь дать представление о том, чтобы предоставить лимит времени для вызова класса.

Solutions Collecting From Web of "Как вызвать другое действие после определенного срока"

Вы можете использовать таймер и добавить TimerTask, который выполняется после определенной задержки.

Вот более или менее завершенный пример:

Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { //here you can start your Activity B. } }, 10000); 

В приведенном выше примере выполняется новая TimerTask за 10 секунд. Внутри TimerTask вы можете переопределить метод run. В методе запуска вы можете начать свою новую деятельность. Метод запуска выполняется после задержки. В этом примере это 10 000 миллисекунд.

Вот простое решение. Это может быть использовано, например, для отображения активности всплеска в течение 1 секунды, а затем перехода в основное приложение:

 public class Splash extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash); int secondsDelayed = 1; new Handler().postDelayed(new Runnable() { public void run() { startActivity(new Intent(Splash.this, ActivityB.class)); finish(); } }, secondsDelayed * 1000); } } 

Это также можно сделать с использованием класса CountDownTimer .

См. Этот пример для 3-секундной задержки.

 new CountDownTimer(3000, 1000) { public void onFinish() { Intent startActivity = new Intent(ThisActivity.this,ActivityToStart.class); startActivity(startActivity); finish(); } public void onTick(long millisUntilFinished) { } }.start(); 

Вам также может потребоваться определить родительскую активность в файле AndroidManifest.xml ,

 <activity android:name=".ActivityToStart" android:label="Back" android:parentActivityName=".MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity> 

Будем надеяться, что следующий пример может помочь.

Здесь я вызываю MainActivity.java через определенное время (2 секунды в этом примере) из MainPage.java

КОД:

 public class MainPage extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_page); Handler handler=new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(MainPage.this,MainActivity.class)); } },2000L); } }