首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android启动项目结构

Android启动项目结构
EN

Stack Overflow用户
提问于 2015-04-20 11:47:22
回答 2查看 50关注 0票数 1

我从android工作室开始,我试着让应用程序在启动之前检查连接性,为此我创建了一个启动屏幕,但我真的找不到方法来计算检查连接的时间,我的要求是,启动屏幕只能在我检查连接时保持可见。这就是我的onCreate方法中的内容:

代码语言:javascript
复制
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毫秒,但这不是我的主意.如果有人知道我该如何面对这一切,我将非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-20 12:02:50

据我所知,您希望检查网络可用性,如果可用,请启动MainActivity。您可以使用此函数检查网络可用性:

代码语言:javascript
复制
public boolean isInternetAvailable(Context context)
{
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
        context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();

    if (info == null){
        return false;
    }
    else{
        return true;
    }
}

然后在您的SplashScreen活动中添加以下代码:

代码语言:javascript
复制
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();
    }
}

请不要忘记将此权限添加到清单文件中:

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

我希望我能正确理解你。祝好运。

票数 0
EN

Stack Overflow用户

发布于 2015-04-20 12:03:22

在这种情况下,您可以使用AsyncTask。下面是一些简单的代码,让您开始工作:

代码语言:javascript
复制
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.
        }
    }
}

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29747030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档