我从android studio开始,我正在尝试应用程序在开始之前检查连接,为此我创建了一个启动画面,但我真的找不到计算检查时间的方法连接,我的要求是,当我检查连接时,启动屏幕只能保持可见。 这就是我在onCreate方法中所拥有的:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int myTimer = 4000;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(Splash.this, DashBoard.class);
boolean result = AppManager.CheckConnectionStatus(getApplicationContext());
if(result == true) {
startActivity(i);
}
else{
//Show a Message informing there is not internet connection
}
finish();
}
}, myTimer);
setContentView(R.layout.activity_splash);
}
正如你所看到我等待4000毫秒,但这不是主意...... 如果有任何想法我怎么能面对这个,我将不胜感激。
答案 0 :(得分:0)
据我所知,您想检查网络可用性,然后如果可用,请启动MainActivity。您可以使用此功能检查网络可用性:
public boolean isInternetAvailable(Context context)
{
NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null){
return false;
}
else{
return true;
}
}
然后在SplashScreen活动中添加此代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Intent i = new Intent(Splash.this, DashBoard.class);
if(isInternetAvailable(Splash.this)){
startActivity(i);
finish();
}
else{
Toast toast = Toast.makeText(Splash.this,
"Please check your internet options...", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
finish();
}
}
不要忘记将此权限添加到清单文件中:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
我希望我能理解你。祝你好运。
答案 1 :(得分:0)
在这种情况下,您可以使用AsyncTask
。这里有一些简单的代码可以帮助您入门:
public class CheckConnectionAsyncTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Display some waiting progress bar or a splash image here
}
@Override
protected Boolean doInBackground(Void... params) {
return AppManager.CheckConnectionStatus(getApplicationContext());
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(aBoolean);
if (result) {
// start next activity
} else {
// error message that you're not connected.
}
}
}
希望它有所帮助!