In my splash screen, I made it so that it detects whether wifi or 3g is enabled or not. If it is not, a dialog screen prompts the user to exit and turn either one on. If it is on, then the code will continue. I keep getting an error in my logcat about my activity having a leaked window. I am not sure how to solve this issue. Code and logcat below. Any Ideas?
Here's my code:
//create alert dialog for wifi and 3g
connectionDialog = new AlertDialog.Builder(SplashMain.this).create();
Log.d(TAG, "dialog created");
connectionDialog.setTitle("Wifi or 3G not detected. Please enable either Wifi or 3G");
connectionDialog.setButton("Exit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
wifiHandler = new Handler();
setContentView(R.layout.splashscreen); //Make the splash screen load first
Thread splashScreenTimer = new Thread(){ //create a timer for the splash screen
public void run(){ //create a run class
Looper.prepare(); //prepare looper
try{ //methods within the run class
int screenTimer =0;
//make it last 3 seconds - create a while loop
while(screenTimer <3000){
sleep(100); //100= 1/10th of a second
screenTimer = screenTimer +100;
}
connectionState(); //check wifi stuff
Log.d(TAG, "checked wifi state");
if(mobile == true || wifi == true){
Log.d(TAG, "wifi is true");
connectionDialog.dismiss();
startActivity (new Intent("ravebox.dev.sdr.CLEARSCREEN"));
finish();
Log.d(TAG, "started activity");
}
if(mobile == false || wifi == false){
Log.d(TAG, "wifi is false");
wifiHandler.post(new Runnable() {
@Override
public void run() {
Log.d(TAG, "show dialog");
connectionDialog.show();
Log.d(TAG, "show'd dialog");
}
});
}//add activity to the manifest
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
//finish();
}
}
};
splashScreenTimer.start();
Log cat:
08-30 22:45:32.188: ERROR/WindowManager(334): Activity ravebox.dev.sdr.SplashMain has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405377e0 that was originally added here
08-30 22:45:32.188: ERROR/WindowManager(334): android.view.WindowLeaked: Activity ravebox.dev.sdr.SplashMain has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405377e0 that was originally added here
08-30 22:45:32.188: ERROR/WindowManager(334): at android.view.ViewRoot.<init>(ViewRoot.java:258)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.view.Window$LocalWindowManager.addView(Window.java:465)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.app.Dialog.show(Dialog.java:241)
08-30 22:45:32.188: ERROR/WindowManager(334): at ravebox.dev.sdr.SplashMain$2$1.run(SplashMain.java:90)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.os.Handler.handleCallback(Handler.java:587)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.os.Handler.dispatchMessage(Handler.java:92)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.os.Looper.loop(Looper.java:123)
08-30 22:45:32.188: ERROR/WindowManager(334): at android.app.ActivityThread.main(ActivityThread.java:3835)
08-30 22:45:32.188: ERROR/WindowManager(334): at java.lang.reflect.Method.invokeNative(Native Method)
08-30 22:45:32.188: ERROR/WindowManager(334): at java.lang.reflect.Method.invoke(Method.java:507)
08-30 22:45:32.188: ERROR/WindowManager(334): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
08-30 22:45:32.188: ERROR/WindowManager(334): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
08-30 22:45:32.188: ERROR/WindowManager(334): at dalvik.system.NativeStart.main(Native Method)