【问题标题】:App stuck at Splash screen even after enabling internet connection即使启用互联网连接后,应用程序仍卡在启动画面
【发布时间】:2016-11-16 06:13:42
【问题描述】:

我将启动活动设置为检查活动的互联网连接。如果没有互联网连接,我设置了一个警报对话框以弹出一个按钮来打开互联网设置。现在我面临的问题是,即使在启用互联网连接并返回后,它仍然卡在启动画面中。应用未打开新活动。

SplashActivity.java

public class SplashActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    boolean mobileNwInfo;
    ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    try {     
          mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected();   
      }
    catch (NullPointerException e) {     
          mobileNwInfo = false;
      }
    if (!mobileNwInfo) {
        new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
                .setTitleText("Info ")
                .setCustomImage(R.mipmap.alert)
                .setContentText("No internet connection!")
                .setConfirmText("OPEN SETTINGS")
                .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                    @Override
                    public void onClick(SweetAlertDialog sDialog) {
                        sDialog.dismissWithAnimation();
                        startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
                    }
                }).show();
    }
    else
    {
      Splash();
    }
}

public void Splash()
{
    int SPLASH_TIME_OUT = 5000;
    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {

            Intent i = new Intent(SplashActivity.this, Main2Activity.class);
            startActivity(i);
            finish();
        }
    }, SPLASH_TIME_OUT);
}
}

【问题讨论】:

  • 你在 onResume() 中检查过网络连接吗?

标签: android android-intent splash-screen


【解决方案1】:

您必须在 onResume() 中检查互联网状况。试试下面的代码:

public class SplashActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
    }

    @Override
    public void onResume() {
        super.onResume();
        if (!checkInternet()) {
            new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
                    .setTitleText("Info ")
                    .setCustomImage(R.mipmap.alert)
                    .setContentText("No internet connection!")
                    .setConfirmText("OPEN SETTINGS")
                    .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                        @Override
                        public void onClick(SweetAlertDialog sDialog) {
                            sDialog.dismissWithAnimation();
                            startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
                        }
                    })
                    .show();
        } else {
            Splash();
        }
    }

    public boolean checkInternet() {
        boolean mobileNwInfo;
        ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        try {
            mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected();
        } catch (NullPointerException e) {
            mobileNwInfo = false;
        }
        return mobileNwInfo;
    }

    public void Splash() {
        int SPLASH_TIME_OUT = 5000;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(SplashActivity.this, Main2Activity.class);
                startActivity(i);
                finish();
            }
        }, SPLASH_TIME_OUT);
    }
}

【讨论】:

  • 使用此代码,即使有活动的互联网连接,警报对话框也始终打开。
  • 更改 if 条件 if (!checkInternet()),检查我更新的代码。
  • 现在完美运行。启用互联网并返回启动活动后再次运行并打开新活动。非常感谢。
  • 当然,需要等待 15 分钟才能接受答案:)
  • 好的。祝你有美好的一天!
【解决方案2】:

只需将此代码粘贴到 onStart() 并删除 else 来自 onCreate(Bundle savedInstanceState) 的块

void onStart()
{
    boolean mobileNwInfo;
    ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    try { 
           mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected(); 
        }catch (NullPointerException e) { mobileNwInfo = false; }


if (mobileNwInfo) {

  Splash();
}

}

【讨论】:

    【解决方案3】:
    public class SplashActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    
    boolean mobileNwInfo;
    ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    try { 
       mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected(); 
        }
    catch (NullPointerException e) { mobileNwInfo = false; }
    if (!mobileNwInfo) {
        new SweetAlertDialog(this, SweetAlertDialog.WARNING _TYPE)
                .setTitleText("Info ")
                .setCustomImage(R.mipmap.alert)
                .setContentText("No internet connection!")
                .setConfirmText("OPEN SETTINGS")
                .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                    @Override
                    public void onClick(SweetAlertDialog sDialog) {
                        sDialog.dismissWithAnimation();
                        startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
                    }
                })
                .show();
    }
    else
    {
      Splash();
    }
    
    
    }
    
      public void Splash()
     {
    int SPLASH_TIME_OUT = 5000;
    new Handler().postDelayed(new Runnable() {
    
        @Override
        public void run() {
    
            Intent i = new Intent(SplashActivity.this, Main2Activity.class);
            startActivity(i);
            finish();
        }
    }, SPLASH_TIME_OUT);
    }
    
      }
    

    在 Manifest.xml 中添加这个

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 2021-08-26
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多