彼の位置を含むSMSを受信しているアプリケーションがあります.SMSを受信すると、別のアクティビティを呼び出して開始し、その位置をそのアクティビティに渡してマップ上にプロットします.2番目のアクティビティを呼び出す前に、通知のようなトーストを表示します画面には表示されますが、トーストが表示されない2番目のアクティビティの呼び出しが原因で、何らかの問題があります。私の質問は、このアクティビティから2番目のアクティビティの呼び出しを遅らせるにはどうすればよいですか。
次のようなものを使用できます。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i=new Intent(SearxhJobs.this,JobsTypes.class);
startActivity(i);
}
}, 5000);
ここでは、アクティビティの起動に最大5秒待機します。
それが役に立てば幸い
あなたはこのようにHandler
でそれを行うことができます
Handler h = new Handler(){
@Override
public void handleMessage(Message msg) {
Intent i = new Intent().setClass(ctx, MainActivity.class);
startActivity(i);
}
};
h.sendEmptyMessageDelayed(0, 1500); // 1500 is time in miliseconds
DoInBackground()メソッドでThread.sleep()を実行するAsyncClassを作成し、onPostExecute()メソッドで新しいアクティビティに移動します。
トーストメッセージを呼び出して、AsyncClassを実行します。
Kotlinの場合
Handler().postDelayed({
val i = Intent(this, MainActivity::class.Java)
startActivity(i)
}, 5000)
試してください:
Runnable r = new Runnable() {
@Override
public void run() {
// if you are redirecting from a fragment then use getActivity() as the context.
startActivity(new Intent(SplashActivity.this, MainActivity.class));
// To close the CurrentActitity, r.g. SpalshActivity
finish();
}
};
Handler h = new Handler();
// The Runnable will be executed after the given delay time
h.postDelayed(r, 1500); // will be delayed for 1.5 seconds
例は次のようになります:
Handler TimeDelay=new Handler();
if(previous=="geofence"){
tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null);
Runnable r = new Runnable() {
@Override
public void run() {
/*
Intent intent = new Intent(
MyBroadcastMessageReceiver.class.getName());
intent.putExtra("some additional data", choice);
someActivity.sendBroadcast(intent);*/
tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null);
}
};
TimeDelay.postDelayed(r, 150000);
レイアウトを設定するだけ!
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
setContentView(R.layout.next); //where <next> is you target activity :)
}
}, 5000);