#android #google-maps #android-activity #gps
#Android #google-карты #android-activity #gps
Вопрос:
У меня есть приложение, в котором я получаю sms, содержащее его местоположение.При получении sms он запускает другое действие и передает это местоположение этому действию, чтобы отобразить его на карте. Перед вызовом второго действия на экране отображается всплывающее уведомление, похожее на уведомление, но почему-то из-за вызова второго действия этот тост не появляется.Мой вопрос в том, как мы можем отложить вызов второго действия из этого действия?
Ответ №1:
Вы можете использовать что-то вроде этого:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i=new Intent(SearxhJobs.this,JobsTypes.class);
startActivity(i);
}
}, 5000);
Здесь он ожидает до 5 секунд, чтобы запустить действие.
Надеюсь, это поможет
Комментарии:
1. Еще лучше, в наши дни, сделать runnable лямбда.
Ответ №2:
Вы можете сделать это 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
Ответ №3:
Создайте AsyncClass, который выполняет Thread.sleep() в методе doInBackground(), затем перейдите к своему новому действию в вашем методе onPostExecute().
Вызовите всплывающее сообщение, а затем выполните AsyncClass.
Ответ №4:
Для Kotlin
Handler().postDelayed({
val i = Intent(this, MainActivity::class.java)
startActivity(i)
}, 5000)
Комментарии:
1. чтобы сделать его коротким
Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) }, 3000)
Ответ №5:
Попробуйте:
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
Ответ №6:
Просто установите макет!
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
setContentView(R.layout.next); //where <next> is you target activity :)
}
}, 5000);
Комментарии:
1. Плохое решение. Через 5 секунд действие может больше не существовать или оно может быть воссоздано. Например, из-за изменения ориентации.
Ответ №7:
Примером может быть следующее:
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);