Android - rare runtime exception that does not point to any class where it starts
<p>I am getting this runtime exception about once every thousand+ sessions on the app, so it is rare and I have not been able to reproduce it.  </p>

<pre><code>java.lang.IllegalArgumentException: View not attached to window manager
        at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:381)
        at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:226)
        at android.view.Window$LocalWindowManager.removeView(Window.java:432)
        at android.app.Dialog.dismissDialog(Dialog.java:278)
        at android.app.Dialog.access$000(Dialog.java:71)
        at android.app.Dialog$1.run(Dialog.java:111)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:130)
        at android.app.ActivityThread.main(ActivityThread.java:3691)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
        at dalvik.system.NativeStart.main(Native Method)
</code></pre>

<p>Would anyone know how to reproduce it, or why it happens? Or better yet, how to fix it? :)</p>

<p>Thanks!</p>

<p>EDIT:</p>

<p>I added the suggestion made by Raghav to add this:</p>

<pre><code>&lt;activity android:label="@string/app_name" 
        android:configChanges="orientation|keyboardHidden" 
        android:name="ActivityName"&gt;
</code></pre>

<p>But this has not fixed the crashing and the crashing is still happening.</p>

<p>EDIT:</p>

<p>Here is some typical code I use:</p>

<pre><code>public class ProblemActivity extends BaseListActivity
{
    Dialog dialog;

        ....


@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    ...

    // After some action
    dialog.show();
}

public class GetSolutionTopicsTask extends AsyncTask&lt;String, Void, String&gt; 
{
    @Override
    protected String doInBackground(String... theParams) 
    {
        String myUrl = theParams[0];
        String problem_id = theParams[1];

        String charset = "UTF-8";           
        String response = null;

        try 
        {               
            String query = String.format("problem_id=%s", 
                     URLEncoder.encode(problem_id, charset));

            final URL url = new URL( myUrl + "?" + query );

            final HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            conn.setDoOutput(true); 
            conn.setRequestMethod("POST");

            conn.setDoOutput(true);
            conn.setUseCaches(false);

            conn.connect();

            final InputStream is = conn.getInputStream();
            final byte[] buffer = new byte[8196];
            int readCount;
            final StringBuilder builder = new StringBuilder();
            while ((readCount = is.read(buffer)) &gt; -1) 
            {
                builder.append(new String(buffer, 0, readCount));
            }

            response = builder.toString();      
        } 
        catch (Exception e) 
        {

        }

        return response;
    }

    @Override
    protected void onPostExecute(String result) 
    {           
        if ( result == null  )
        {
            try 
            {
                dialog.dismiss();
            } catch (Exception e) {
                // nothing
            }

        }
        else
        {
            try 
            {
                    dialog.dismiss();
                } 
            catch (Exception e) 
            {
                // nothing
                }    
         }  // End of else

}        
}        
</code></pre>
