我遇到了以下问题。如果检测到没有网络连接,我希望我的应用程序退出。我的应用程序以启动画面启动。如果设备上没有网络连接,可以显示启动画面,然后显示吐司。然后终止申请
我在启动画面代码中有类似的内容:
在onCreate()
中ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkinfo = connectivitymanager.getActiveNetworkInfo();
connected = networkinfo != null && networkinfo.isAvailable()
&& networkinfo.isConnected();
Log.v("Network state : ", connected + "");
Thread splashThread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while (waited < 5000) {
sleep(100);
waited += 100;
}
} catch (InterruptedException e) {
// do nothing
} finally {
Looper.prepare();
if (connected == false) {
Toast.makeText(
splashscreenActivity.this,
"No Network Connection is available on device.",
Toast.LENGTH_LONG).show();
finish();
System.exit(0);
} else {
finish();
startActivity(new Intent(splashscreenActivity.this,
mainActivity.class));
}
Looper.loop();
}
}
};
splashThread.start();
1.请看我的代码并指导我如何出示吐司。 2.或者建议我做一些其他更好的方法
由于
编辑:
谢谢大家回复:
我选择了Dharmendra通过启动画面活动来展示吐司的方式:
适用的代码是:
if (connected == false) {
splashscreenActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(splashscreenActivity.this,
"No Internet Connection.", 3000).show();
}
});
finish();
} else {
//migrate to main activity from splashscreen
}
答案 0 :(得分:3)
你可以这样做,使用Handler。在else条件中输入以下代码
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(Splash.this, "Network error", Toast.LENGTH_LONG).show();
finish();
}
});
或者,我在我的申请中这样做:
if(status.equals("CONNECTED"))
{
startActivity(new Intent(Splash.this,Activity.class));
finish();
}else
{
startActivity(new Intent(Splash.this,NetworkError.class));
finish();
}
其中NetworkError类显示另一个布局,其图像类似于“No Network ,,,,”(或者您要显示的任何内容而不是splash ...)
答案 1 :(得分:2)
您正在创建并显示来自线程的Toast,因此可能不会调用
您必须编写此代码
splashscreenActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(c, "Internet connection not currently available.", 3000).show();
}
});
答案 2 :(得分:0)
只需添加一个if else块。(使用ur连接网络信息)
if(connected){
//put the splash thread here
}else{
finish();
}
答案 3 :(得分:0)
如果您不希望捕获任何异常,则使用finally块。在你的代码中,将所有代码放在else循环中,如果时间为5000,则转到else语句并执行它。如果你要添加catch,你最终可以删除。