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);
}
}
我在android启动时启动了一个活动,但android需要一些时间来建立网络连接,因此我想延迟10秒的应用程序启动,以便我的应用程序可以使用互联网。
答案 0 :(得分: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);
}
};
}
}
答案 1 :(得分:0)
进行这种后台处理工作的最佳做法是创建一个启动画面,并在特定时间内在重度活动开始时使用各种动画加载它们。这样用户可以等到后台进程完成。
您的方法似乎需要大量编码。
希望这会有所帮助。
答案 2 :(得分:0)
您应该使用另一个可以检测网络状态更改的BroadcastReceiver,而不是进行一些随机延迟(这是不可靠的)。例如:NetworkStateReceiver。这将检测网络状态何时发生变化。见这里:Check INTENT internet connection
所以你的应用程序应该有2个BroadcastReceivers:BootupReceiver和NetworkStateReceiver。
在BootUpReceiver的onReceive()中,将首选项中的某些标志设置为true。 然后在NetworkStateReceiver的onReceive()中,检查标志,如果标志为true,则打开Activity并将标志设置为false。
(要在BroadcastReceiver中的SharedPreferences中设置值,请参阅:Shared preferences inside broadcastreceiver)
虽然这样可行,但这不是自动启动Activity的好习惯。用户可能不喜欢它。