我一直在搜索整个互联网,以解决这个问题在我的应用程序,但没有什么真的似乎为我工作。安卓替代睡眠后启动Intent方法
我有一个起始页面,它处理我的Json-Data的下载,3秒钟后,一个Intent启动并将我重定向到应用程序。这工作正常,如果我有更快的互联网连接。如果Internet连接速度较慢,以在3秒内加载所有数据,则会抛出异常。
所以我的问题是,如何获得下载过程的实时?
我应该处理这个,2线程?
谢谢! =)
代码如下:
public class StartLogoPage extends Activity {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
private Thread timer;
private Thread intentThread;
private Thread timerNoInternet;
private boolean serverResponse = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_startlogopage);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// startIntent();
haveNetworkConnection();
Dashboard ds = new Dashboard();
if (haveConnectedWifi == true || haveConnectedMobile == true) {
Toast.makeText(this, "Loading data from Internet",
Toast.LENGTH_LONG).show();
timer = new Thread() {
public void run() {
try {
System.out.println("timer Thread started.");
// start timer
UrlHandler urlHandler = new UrlHandler();
urlHandler.handleEvents(1);
urlHandler.handleNews(1);
urlHandler.handlePerson(1);
urlHandler.handleWebIndex(1);
urlHandler.handleNavigation(1);
sleep(3000);
} catch (Exception e) {
e.printStackTrace();
} finally {
Intent openDashboard = new Intent(
"com.example.incomingandroid.DASHBOARD");
System.out.println("openDashboard" + openDashboard);
// openDashboard.clone();
// if (openDashboard != null)
startActivity(openDashboard);
}
}
};
timer.start();
} else {
Toast.makeText(
this,
"No Internet Connection was found. This Application needs Internet to be started.",
Toast.LENGTH_LONG).show();
timerNoInternet = new Thread() {
public void run() {
try {
sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
finish();
}
}
};
timerNoInternet.start();
}
}
private boolean haveNetworkConnection() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
可以使用处理器 – Raghunandan
ü可以specificate你的答案吗? =) –