如何延迟在android启动时启动应用程序?

如何延迟在android启动时启动应用程序?,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我正在android startup上启动一项活动,但android需要一些时间来建立网络连接,因此我希望延迟10秒应用程序启动,以便我的应用程序可以使用internet。使用runnable public class BootUpReceiver extends BroadcastReceiver{ @Override public void onReceive(final Context context, Intent intent) { //Delay 10 sec so th

我正在android startup上启动一项活动,但android需要一些时间来建立网络连接,因此我希望延迟10秒应用程序启动,以便我的应用程序可以使用internet。

使用runnable

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);                

         }

}

做这种背景处理工作的最佳实践是创建一个启动屏幕,并在一段特定时间内的繁重活动开始时使用各种动画和有吸引力的内容加载它。这样用户就可以等到后台处理完成

您的方法似乎需要大量的编码


希望这会有所帮助。

您应该使用另一个可以检测网络状态变化的BroadcastReceiver,而不是进行一些随机延迟(这是不可靠的)。例如:NetworkStateReceiver。这将检测网络状态何时更改。请看这里:

因此,应用程序应该有2个BroadcastReceiver:BootupReceiver和NetworkStateCeiver

在BootUpReceiver的onReceive()中,将首选项中的某些标志设置为true。 然后在NetworkStateReceive的onReceive()中,检查该标志,如果该标志为true,则打开活动并将该标志设置为false

(要在BroadcastReceiver中设置SharedReferences中的值,请参阅:)


虽然这会起作用,但这不是自动启动活动的好做法。用户可能不喜欢它。

为什么它不运行?
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); 

        }
    };
  }

}