MediaScannerConnection erzeugt android.app.ServiceConnectionLeaked

Ich verwende den MediaScannerConnection Beispielcode aus den API Demos

Das Snippet, das ich verwende, ist:

  • Android: Kann keine explizite Aktivitätsklasse finden ... startActivity von einer PreferenceActivity
  • Verwenden Sie externe Schriften in Android
  • Dynamische Einstellung der übergeordneten Aktivität
  • Berechnung der Internet-Geschwindigkeit in Android
  • Mac Error Android-Projekt erstellen - "Fehler beim Ausführen von Builder" Android Resource Manager "auf Projekt"
  • Android ListView Alpha Scroller für schnelles Scrollen lange Liste
  • MediaScannerConnection.scanFile(context, new String[] { permFile.getAbsolutePath() }, null, new MediaScannerConnection.OnScanCompletedListener() { public void onScanCompleted(String path, Uri uri) { android.util.Log.i("ExternalStorage", "Scanned " + path + ":"); android.util.Log.i("ExternalStorage", "-> uri=" + uri); } }); 

    Wenn ich diesen Code laufe, bekomme ich einen FC-Dialog mit dem folgenden aus dem LogCat:

     4-20 23:17:45.988: ERROR/ActivityThread(3015): Activity com.my.package.name has leaked ServiceConnection android.media.MediaScannerConnection@40715c70 that was originally bound here 04-20 23:17:45.988: ERROR/ActivityThread(3015): android.app.ServiceConnectionLeaked: Activity com.my.package.name has leaked ServiceConnection android.media.MediaScannerConnection@40715c70 that was originally bound here 

    Was mache ich falsch? FYI Ich laufe das aus einem Hintergrund-Thread mit AsyncTask.

  • Wie man QR-Code für BOTH Android Market und App Store
  • Aktivieren von MultiDex-Unterstützung in Android, um 65K + -Methoden in Eclipse zu erreichen
  • Apt Abhängigkeitsbereich in Android gradle - wie wird es verwendet?
  • Android WIFI Wie zu erkennen, wenn bestimmte WIFI-Verbindung verfügbar ist
  • NullPointerExcepetion Facebook sdk v4.5.0 wenn aktivieren Sie Proguard (wenn Sie versuchen, sich mit der Parse-Bibliothek anzumelden)
  • Ist es OK, eine Instanz von SQLiteOpenHelper zu haben, die von allen Aktivitäten in einer Android-Anwendung geteilt wird?
  • 3 Solutions collect form web for “MediaScannerConnection erzeugt android.app.ServiceConnectionLeaked”

    Ich bemerkte die gleiche Art von Fehlermeldung mit dem Code-Snippet mit der Dokumentation von Environment.getExternalStoragePublicDirectory zur Verfügung gestellt .

    Der Code funktioniert wie erwartet und macht eine neue Datei in der Gerätegalerie sichtbar , druckt aber gleichzeitig den Fehler über die leaked ServiceConnection .

    Wenn man den internen Android-Code der MediaScannerConnection , scheint es, dass irgendeine Art von Mechanismus existiert, um den Dienst nach der letzten Datei zu stoppen. Vielleicht funktioniert es nicht, wenn nur eine Datei gegeben?

    Ich habe eine ganz andere Lösung genutzt, indem ich den MediaScanner über Intent informiere. Dies funktioniert auch gut und in ist keine Warnungen zu produzieren:

     Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri fileContentUri = Uri.fromFile(permFile); // With 'permFile' being the File object mediaScannerIntent.setData(fileContentUri); this.sendBroadcast(mediaScannerIntent); // With 'this' being the context, eg the activity 

    Es scheint, dass dies der bevorzugte Weg ist, denn es wird in der Android-Training über das Fotografieren auch erwähnt.

    Verwenden getApplicationContext() stattdessen getApplicationContext() .

    Ich hatte dieses Problem mit dem Spracherkenner, wenn ich Layouts / etc ändern würde. Alles was ich tun musste, fügte ein unregisterReceiver hinzu, so etwas wie das im onActivityResult:

     @Override protected void onDestroy() { // TODO Auto-generated method stub unregisterReceiver(mReceiver); super.onDestroy(); } 

    Ich hoffe, das hilft!

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.