Actividad ha filtrado ventana com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0 que fue agregado originalmente aquí

Estoy utilizando google lugar api y quiero buscar más cercano restaurante y cafetería, pero cuando busco que los datos con la barra de progreso un error se produce

class LoadPlaces extends AsyncTask<String, String, String> { /** * Before starting background thread Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(MainActivity.this); pDialog.setMessage(Html.fromHtml("<b>Search</b><br/>Loading Places...")); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * getting Places JSON * */ protected String doInBackground(String... args) { // creating Places class object googlePlaces = new GooglePlaces(); try { // Separeate your place types by PIPE symbol "|" // If you want all types places make it as null // Check list of types supported by google // String types = "cafe|restaurant"; // Listing places only cafes, restaurants // Radius in meters - increase this value if you don't find any places double radius = 1000; // 1000 meters // get nearest places nearPlaces = googlePlaces.search(gps.getLatitude(), gps.getLongitude(), radius, types); } catch (Exception e) { e.printStackTrace(); } return null; } protected void onPostExecute(String file_url) { // dismiss the dialog after getting all products if(pDialog != null) pDialog.dismiss(); // updating UI from Background Thread runOnUiThread(new Runnable() { public void run() { /** * Updating parsed Places into LISTVIEW * */ // Get json response status String status = nearPlaces.status; // Check for all possible status if(status.equals("OK")){ // Successfully got places details if (nearPlaces.results != null) { // loop through each place for (Place p : nearPlaces.results) { HashMap<String, String> map = new HashMap<String, String>(); // Place reference won't display in listview - it will be hidden // Place reference is used to get "place full details" map.put(KEY_REFERENCE, p.reference); // Place name map.put(KEY_NAME, p.name); // adding HashMap to ArrayList placesListItems.add(map); } // list adapter ListAdapter adapter = new SimpleAdapter(MainActivity.this, placesListItems, R.layout.list_item, new String[] { KEY_REFERENCE, KEY_NAME}, new int[] { R.id.reference, R.id.name }); // Adding data into listview lv.setAdapter(adapter); } } else if(status.equals("ZERO_RESULTS")){ // Zero results found alert.showAlertDialog(MainActivity.this, "Near Places", "Sorry no places found. Try to change the types of places", false); } else if(status.equals("UNKNOWN_ERROR")) { alert.showAlertDialog(MainActivity.this, "Places Error", "Sorry unknown error occured.", false); } else if(status.equals("OVER_QUERY_LIMIT")) { alert.showAlertDialog(MainActivity.this, "Places Error", "Sorry query limit to google places is reached", false); } else if(status.equals("REQUEST_DENIED")) { alert.showAlertDialog(MainActivity.this, "Places Error", "Sorry error occured. Request is denied", false); } else if(status.equals("INVALID_REQUEST")) { alert.showAlertDialog(MainActivity.this, "Places Error", "Sorry error occured. Invalid Request", false); } else { alert.showAlertDialog(MainActivity.this, "Places Error", "Sorry error occured.", false); } } }); } 

Y el método de búsqueda para la clase GooglePlaces es

 public PlacesList search(double latitude, double longitude, double radius, String types) throws Exception { this._latitude = latitude; this._longitude = longitude; this._radius = radius; try { HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT); HttpRequest request = httpRequestFactory .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL)); request.getUrl().put("key", API_KEY); request.getUrl().put("location", _latitude + "," + _longitude); request.getUrl().put("radius", _radius); // in meters request.getUrl().put("sensor", "false"); if(types != null) request.getUrl().put("types", types); PlacesList list = request.execute().parseAs(PlacesList.class); // Check log cat for places response status Log.d("Places Status", "" + list.status); return list; } catch (HttpResponseException e) { Log.e("Error:", e.getMessage()); return null; } } 

Y he usado permiso como

Pero estoy recibiendo error en logcat es

 08-14 22:29:59.867: E/AndroidRuntime(331): FATAL EXCEPTION: AsyncTask #1 08-14 22:29:59.867: E/AndroidRuntime(331): java.lang.RuntimeException: An error occured while executing doInBackground() 08-14 22:29:59.867: E/AndroidRuntime(331): at android.os.AsyncTask$3.done(AsyncTask.java:200) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.lang.Thread.run(Thread.java:1096) 08-14 22:29:59.867: E/AndroidRuntime(331): Caused by: java.lang.NoClassDefFoundError: com.google.common.base.Preconditions 08-14 22:29:59.867: E/AndroidRuntime(331): at com.google.api.client.util.ClassInfo.<init>(ClassInfo.java:164) 08-14 22:29:59.867: E/AndroidRuntime(331): at com.google.api.client.util.ClassInfo.of(ClassInfo.java:92) 08-14 22:29:59.867: E/AndroidRuntime(331): at com.google.api.client.util.GenericData.<init>(GenericData.java:79) 08-14 22:29:59.867: E/AndroidRuntime(331): at com.google.api.client.util.GenericData.<init>(GenericData.java:61) 08-14 22:29:59.867: E/AndroidRuntime(331): at com.google.api.client.http.GenericUrl.<init>(GenericUrl.java:97) 08-14 22:29:59.867: E/AndroidRuntime(331): at com.eheuristic.android.googlemap.GooglePlaces.search(GooglePlaces.java:56) 08-14 22:29:59.867: E/AndroidRuntime(331): at com.eheuristic.android.googlemap.MainActivity$LoadPlaces.doInBackground(MainActivity.java:1 85) 08-14 22:29:59.867: E/AndroidRuntime(331): at com.eheuristic.android.googlemap.MainActivity$LoadPlaces.doInBackground(MainActivity.java:1) 08-14 22:29:59.867: E/AndroidRuntime(331): at android.os.AsyncTask$2.call(AsyncTask.java:185) 08-14 22:29:59.867: E/AndroidRuntime(331): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 08-14 22:29:59.867: E/AndroidRuntime(331): ... 4 more 08-14 22:29:59.967: W/IInputConnectionWrapper(331): showStatusIcon on inactive InputConnection 08-14 22:30:02.298: E/WindowManager(331): Activity com.eheuristic.android.googlemap.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0 that was originally added here 08-14 22:30:02.298: E/WindowManager(331): android.view.WindowLeaked: Activity com.eheuristic.android.googlemap.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0 that was originally added here 08-14 22:30:02.298: E/WindowManager(331): at android.view.ViewRoot.<init>(ViewRoot.java:247) 08-14 22:30:02.298: E/WindowManager(331): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 08-14 22:30:02.298: E/WindowManager(331): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 08-14 22:30:02.298: E/WindowManager(331): at android.view.Window$LocalWindowManager.addView(Window.java:424) 08-14 22:30:02.298: E/WindowManager(331): at android.app.Dialog.show(Dialog.java:241) 08-14 22:30:02.298: E/WindowManager(331): at com.eheuristic.android.googlemap.MainActivity$LoadPlaces.onPreExecute(MainActivity.java:164) 08-14 22:30:02.298: E/WindowManager(331): at android.os.AsyncTask.execute(AsyncTask.java:391) 08-14 22:30:02.298: E/WindowManager(331): at com.eheuristic.android.googlemap.MainActivity.onCreate(MainActivity.java:104) 08-14 22:30:02.298: E/WindowManager(331): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-14 22:30:02.298: E/WindowManager(331): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 08-14 22:30:02.298: E/WindowManager(331): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 08-14 22:30:02.298: E/WindowManager(331): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 08-14 22:30:02.298: E/WindowManager(331): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 08-14 22:30:02.298: E/WindowManager(331): at android.os.Handler.dispatchMessage(Handler.java:99) 08-14 22:30:02.298: E/WindowManager(331): at android.os.Looper.loop(Looper.java:123) 08-14 22:30:02.298: E/WindowManager(331): at android.app.ActivityThread.main(ActivityThread.java:4627) 08-14 22:30:02.298: E/WindowManager(331): at java.lang.reflect.Method.invokeNative(Native Method) 08-14 22:30:02.298: E/WindowManager(331): at java.lang.reflect.Method.invoke(Method.java:521) 08-14 22:30:02.298: E/WindowManager(331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-14 22:30:02.298: E/WindowManager(331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 08-14 22:30:02.298: E/WindowManager(331): at dalvik.system.NativeStart.main(Native Method) 

Está filtrando el diálogo. Necesita llamar a pDialog.dismiss(); En el método onPostExecute () de la tarea asíncrona. Usted también debe poner …

 if(pDialog != null) pDialog.dismiss(); 

En su onPause () método de la actividad en el hilo principal. Esto asegurará que la ventana no se filtró, incluso si su aplicación pierde el primer plano mientras realiza alguna ejecución en segundo plano. Deberías tener algo como esto…

 public class Login extends Activity implements View.OnClickListener{ ProgressDialog pd; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.login); pd = null; } @Override public void onPause(){ super.onPause(); if(pd != null) pd.dismiss(); } public void onClick(View v){ new SendTask().execute(""); } /* No networking allowed on the main thread. */ private class SendTask extends AsyncTask<String,String,String>{ int result; @Override protected void onPreExecute(){ pd = ProgressDialog.show(Login.this,"","Retrieving Inbox...", true,false); } @Override protected String doInBackground(String...strings){ //do networking here result = account.prepare(); return null; } @Override protected void onPostExecute(String unused){ //check result pd.dismiss(); Intent intent = new Intent(Login.this,NextActivity.class); finish(); startActivity(intent); } } } 

Está intentando mostrar una ventana de diálogo después de salir de la pantalla.

Use esto en onStop —>

 @Override protected void onStop() { super.onStop(); if (pDialog != null) { pDialog.dismiss(); pDialog = null; } } 

Simplemente llame a Asynctask en la función IsNetworkAvailable () … como …

 if(isNetworkAvailable()) { AsyncTask_WebAPI asyncTask = new AsyncTask_WebAPI(this, strURL, this); asyncTask.execute(); }else { Toast.makeText(this,"Please Check internet Connectivity",Toast.LENGTH_LONG).show(); } 

Función IsNetworkAvailable ()

 private boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnected(); } 
  • Pocas pérdidas de memoria en Facebook SDK
  • Aplicación de Android con límite de tamaño de memoria
  • Problema con la descarga de varios archivos con AsyncTask
  • Gestión de memoria HttpClient
  • Fuga de memoria MediaControllerCompat
  • Cómo utilizar Leak Canary
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.