I am trying to get data json via volley in android studio , class name obs_bgw , my code working fine but when run the app after 1 min auto refresh application not working and i check the error in firebase crash is
 Exception android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@cc00538 is not valid; is your activity running?
    android.view.ViewRootImpl.setView (ViewRootImpl.java:903)
    android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:377)
    android.view.WindowManagerImpl.addView (WindowManagerImpl.java:97)
    android.app.Dialog.show (Dialog.java:408)
    android.app.ProgressDialog.show (ProgressDialog.java:151)
    android.app.ProgressDialog.show (ProgressDialog.java:134)
    android.app.ProgressDialog.show (ProgressDialog.java:129)
    net.myaapp.app.weatherapp.obs_bgw.sendjsonrequest (obs_bgw.java:51)
    net.myaapp.app.weatherapp.obs_bgw$3.run (obs_bgw.java:88)
    android.os.Handler.handleCallback (Handler.java:751)
    android.os.Handler.dispatchMessage (Handler.java:95)
    android.os.Looper.loop (Looper.java:154)
    android.app.ActivityThread.main (ActivityThread.java:6776)
    java.lang.reflect.Method.invoke (Method.java)
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1496)
    com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1386)
my code
package net.myaapp.app.weatherapp;
import android.app.ProgressDialog;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.json.JSONException;
import org.json.JSONObject;
public class obs_bgw extends AppCompatActivity {
    RequestQueue rq;
    TextView timeDesc, tempDesc, windspeedDesc, windguestDesc, humdityDesc,pressuresDesc;
    int ages;
    int temp;
    int windspeed;
    int windguest;
    int humdity;
    double pressure;
    long timeupdate;
    String url = "station=I1410&units=metric&v=2.0&format=json";
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bgw_obs);
        rq = Volley.newRequestQueue(this);
        timeDesc = (TextView) findViewById(R.id.timeupdateDesc);
        tempDesc = (TextView) findViewById(R.id.tempid);
        windspeedDesc = (TextView) findViewById(R.id.windid);
        windguestDesc = (TextView) findViewById(R.id.windgustid);
        humdityDesc = (TextView) findViewById(R.id.humdid);
        pressuresDesc = (TextView) findViewById(R.id.pressuresDesc);
        sendjsonrequest();
    }
    public void sendjsonrequest() {
        final ProgressDialog dialog = ProgressDialog.show(this,null, "Please Wait");
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                dialog.dismiss();
                try {
                    JSONObject stationsJO = response.getJSONObject("stations");
                    JSONObject I1410JO = stationsJO.getJSONObject("I1410");
                    temp = I1410JO.getInt("temperature");
                    windspeed = I1410JO.getInt("wind_speed");
                    windguest = I1410JO.getInt("wind_gust_speed");
                    humdity = I1410JO.getInt("humidity");
                    timeupdate = I1410JO.getLong("updated") * 1000L;
                    pressure = I1410JO.getDouble("pressure");
                    tempDesc.setText(Integer.toString(temp)+" C");
                    windspeedDesc.setText(Integer.toString(windspeed)+"  كم ");
                    windguestDesc.setText(Integer.toString(windguest)+"  كم ");
                    humdityDesc.setText(Integer.toString(humdity)+"  % ");
                    pressuresDesc.setText(Integer.toString((int) pressure)+" in ");
                    timeDesc.setText(getDate(timeupdate));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                dialog.dismiss();
            }
        });
        rq.add(jsonObjectRequest);
        final Handler handler = new Handler();
        final Runnable runnable = new Runnable() {
            @Override
            public void run() {
                sendjsonrequest();
                handler.postDelayed(this, 60000);//60 second delay
            }
        };
        handler.postDelayed(runnable, 60000);
    }
    private String getDate(long timeStamp) {
        try {
            DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
            Date netDate = (new Date(timeStamp));
            return sdf.format(netDate);
        } catch (Exception ex) {
            return "xx";
        }
    }
}
the problem is with Progress Dialog  ,  line 51         final ProgressDialog dialog = ProgressDialog.show(this,null, "Please Wait");  when he refresh date stop working 
 
     
     
    