2016-03-23 7 views
0

Meine Frage ist, wenn ich mein Gerät rotiere und eine Übertragung vom System zum Beispiel von DownloadManager.ACTION_DOWNLOAD_COMEPLETE zwischen onResume()/onPause() gesendet wird, was ist die beste Vorgehensweise, um zu verhindern, dass die Übertragung verloren geht? Vielen Dank.Android: Wie verhindert man, dass Broadcast bei einer Orientierungsänderung verloren geht?

onResume(){ 
    registerReceiver(receiver, filter); 
} 

// rotate device now 

onPause(){ 
    unregisterReceiver(receiver); 
} 

// broadcast gets sent now 
+1

Prüfung den Status Ihrer Downloads in 'onResume', Selbst wenn Sie die Übertragung verloren haben, können Sie sie jetzt überprüfen – pskink

+0

Versuchen Sie es mit dem Manifest-deklarierten 'BroadcastReceiver' anstatt dem, der in einer' Aktivität' registriert ist. – Onik

+0

@pskink Was ist, wenn die Übertragung einige Informationen enthält, die ich in 'onResume' nicht überprüfen kann? wie 'BluetoothDevice.ACTION_FOUND'? Wenn ein Bluetooth-Gerät gefunden wird, während ich nicht registriert bin, wie kann ich das verlorene Gerät wiederherstellen? – mco

Antwort

0

Fügen Sie einfach folgende Zeile zu Manifest.xml

android: configChanges = "Orientierung | Bildschirmgröße"

<activity 
     android:name=".YourActivity" 
     android:label="@string/app_name" 
     android:configChanges="orientation|screenSize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

</activity>