在飞溅屏幕上显示Toast Android
我陷入了以下问题。如果我的应用程序未检测到网络连接,我希望退出该应用程序。我的应用程序以启动屏幕启动。如果没有网络连接,可以显示启动屏幕,然后是烤面包在device.and然后终止该应用程序在飞溅屏幕上显示Toast Android
我在我的启动画面代码是这样的:
里面的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.Or建议我一些其他更好的方式来做到这一点
感谢
编辑:
谢谢大家的回答:
我选择表示用溅射屏幕活动吐司达门德拉的方式:
适用的代码是:
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
}
你正在创建并显示吐司从线程,这样可以不叫
你必须编写代码
splashscreenActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(c, "Internet connection not currently available.", 3000).show();
}
});
只需添加一个的if else块。(使用UR连接网络信息)
if(connected){
//put the splash thread here
}else{
finish();
}
Thanx回复Walid Hossain,但我应该在哪里显示吐司? – Shruti
你可以像这样做,使用处理程序。把在其他条件
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类显示了类似的图像的另一布局“无网络,,,,”(或任何你想展示,而不是飞溅...)的
+1 - 我喜欢第二个活动的想法,而不是使用烤面包。 –
是的nibha我也喜欢你的方法.. :)谢谢你给我一个更多的选择:) – Shruti
一个最后,如果你不块用于希望捕捉任何例外。在你的代码中,把所有的代码放在一个else循环中,如果时间超过5000,那么去else语句并执行它。如果你添加catch,你可以最终删除。
好Rashmi B ..我会照顾它 – Shruti
我最后阻止的是如果你想要运行某些东西,无论是否有例外被捕获或者它们正在退出该块。所以尝试{...}最后{...}最后{...}是常见的,至少在我的世界里。 –
为什么不在显示启动画面之前进行检查,所以在你启动线程之前。或者,在下一个活动控制的启动画面传递给它之后执行此操作。 –
1)finish(); 2)startActivity(新意图(splashscreenActivity.this, mainActivity.class)); 也许 2) 1) – drifter
当启动画面显示时我们不能显示烤面包吗? – Shruti