2013-10-14 3 views
0
public class BootUpReceiver extends BroadcastReceiver{ 
@Override 
public void onReceive(final Context context, Intent intent) { 

    //Delay 10 sec so that device could establish network 
    Intent i = new Intent(context, SplashActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(i);     

     } 

} 

Я начинаю деятельность по андроидному запуску, но андроид занимает некоторое время, чтобы установить сетевое подключение, поэтому я хочу задержать 10 секунд запуск приложения, чтобы мое приложение могло использовать Интернет.Как задержать запуск приложения при запуске Android?

ответ

0

Сделать это с работоспособным

public class BootUpReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(final Context context, Intent intent) { 
    Handler handler = new Handler(); 
    int delay = 100; 
    handler.postDelayed(startApp, delay); 


    Runnable startApp = new Runnable() { 

     @Override 
     public void run() { 

      Intent i = new Intent(context, SplashActivity.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 

     } 
    }; 
    } 

} 
+0

Я пробовал этот код, но он не работает с runnable. –

+0

Почему он не работает? –

0

Лучшими практиками делают этот вид фоновой обработки материала, чтобы создать заставку и загрузить его с помощью различной анимации и = привлекательных вещей в начале до тяжелой деятельности для определенное количество времени. Так что пользователь может подождать, пока фоновый процесс не завершится.

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

Надеюсь, это поможет.

0

Вместо случайной задержки (что не является надежным) вы должны использовать другой BroadcastReceiver, который может определять изменение состояния сети. Например: NetworkStateReceiver. Это обнаружит изменение состояния сети. См. Здесь: Check INTENT internet connection

Итак, ваше приложение должно иметь 2 BroadcastReceivers: BootupReceiver и NetworkStateReceiver.

В режиме onReceive() BootUpReceiver установите флаг в качестве истины. Затем в onReceive() NetworkStateReceiver отметьте флаг, если флаг имеет значение true, откройте свою активность и установите флаг как false.

(Чтобы установить значения в SharedPreferences в BroadcastReceiver см: Shared preferences inside broadcastreceiver)

Хотя это будет работать, но это не очень хорошая практика, чтобы автоматически запуске процессов. Пользователь может не понравиться.

Смежные вопросы