Android入门项目结构

时间:2015-04-20 11:47:23

标签: java android web-services android-studio

我从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毫秒,但这不是主意...... 如果有任何想法我怎么能面对这个,我将不胜感激。

2 个答案:

答案 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.
        }
    }
}

希望它有所帮助!