我试着为wifi连接写if else条件,但是抛出了错误。
Logcat
05-04 13:32:51.227: E/WindowManager(4355): Activity com.smartmenu.SplashActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41813bd0 that was originally added here
05-04 13:32:51.227: E/WindowManager(4355): android.view.WindowLeaked: Activity com.smartmenu.SplashActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41813bd0 that was originally added here
05-04 13:32:51.227: E/WindowManager(4355): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:343)
05-04 13:32:51.227: E/WindowManager(4355): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:245)
05-04 13:32:51.227: E/WindowManager(4355): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193)
05-04 13:32:51.227: E/WindowManager(4355): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118)
05-04 13:32:51.227: E/WindowManager(4355): at android.view.Window$LocalWindowManager.addView(Window.java:537)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.Dialog.show(Dialog.java:274)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.AlertDialog$Builder.show(AlertDialog.java:932)
05-04 13:32:51.227: E/WindowManager(4355): at com.smartmenu.SplashActivity.showDialog(SplashActivity.java:205)
05-04 13:32:51.227: E/WindowManager(4355): at com.smartmenu.SplashActivity.onCreate(SplashActivity.java:93)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.Activity.performCreate(Activity.java:4465)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.ActivityThread.access$600(ActivityThread.java:122)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
05-04 13:32:51.227: E/WindowManager(4355): at android.os.Handler.dispatchMessage(Handler.java:99)
05-04 13:32:51.227: E/WindowManager(4355): at android.os.Looper.loop(Looper.java:137)
05-04 13:32:51.227: E/WindowManager(4355): at android.app.ActivityThread.main(ActivityThread.java:4340)
05-04 13:32:51.227: E/WindowManager(4355): at java.lang.reflect.Method.invokeNative(Native Method)
05-04 13:32:51.227: E/WindowManager(4355): at java.lang.reflect.Method.invoke(Method.java:511)
05-04 13:32:51.227: E/WindowManager(4355): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-04 13:32:51.227: E/WindowManager(4355): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-04 13:32:51.227: E/WindowManager(4355): at dalvik.system.NativeStart.main(Native Method)代码
if(str.equals(""))
{
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnected()) {
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity.*/
Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
else
{
showDialog();
}
}
else
{
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnected()) {
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity.*/
Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
new DownloadFilesTask().execute();
}
else
{
showDialog();
}showDialog();
private void showDialog()
{
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Attention");
dialog.setMessage("No Internet Connection. Please enable the wifi. ");
dialog.setPositiveButton("OK", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton)
{
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity.*/
Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
});
dialog.show();
}发布于 2012-05-04 15:30:15
尝试使用AsyncTask并在onPostExecute中显示对话框。在onPreExecute中显示闪屏。
发布于 2012-05-04 14:09:20
退出活动后,您正在尝试显示对话框。
解决方案是在退出活动之前创建的对话框上调用dismiss(),例如在onPause()中。
视图有一个对其父上下文的引用(取自构造函数参数)。如果您没有销毁对话框和其他动态创建的视图而离开活动,它们仍然保留对您的活动的引用(如果您使用此作为上下文创建: like new ProgressDialog( this )),因此它不能被GC收集,从而导致内存泄漏。
最初的答案是Alex的HERE
https://stackoverflow.com/questions/10443450
复制相似问题