Das Beenden einer Activity vermeiden...

  • 4 Antworten
  • Neuester Beitrag
Diskutiere Das Beenden einer Activity vermeiden... im Android App Entwicklung im Bereich Betriebssysteme & Apps.
U

Unicate

Erfahrenes Mitglied
Hallo alle zusammen!

Ich habe eine GridView mit ein paar Bildern drauf. Wenn ich nun die SD-Karte am PC mounte, dann soll sich die Activity NICHT schliessen.
Wie verhindere ich das?
 
U

Unicate

Erfahrenes Mitglied
Kann keiner helfen?

Was ich bisher herausgefunden habe:

Wenn man soetwas realsieren möchte muss man in der Activity einen Broadcastreceiver registrieren, welchem man den richtigen IntentFilter geben muss.

Das habe ich so gelößt:
PHP:
protected void onResume() {
        super.onResume();
        IntentFilter intentFilter = new
        IntentFilter(Intent.ACTION_MEDIA_EJECT);
        intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
        intentFilter.addDataScheme("file");
        intentFilter.addDataAuthority("*", null);
        // registering the receiver
        registerReceiver(_receiver, intentFilter);
    }
    
    protected void onPause() {
        super.onPause();
        unregisterReceiver(_receiver);
    };

    private BroadcastReceiver _receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            
            Debug.e(TAG, "intent: " + intent.getAction());
            if(intent.getAction().equalsIgnoreCase(Intent.ACTION_MEDIA_EJECT)) {
                Debug.e(TAG, "ejecting...");
            } else if(intent.getAction().equalsIgnoreCase(Intent.ACTION_MEDIA_MOUNTED)) {
                initialize();
            }
        }
        
    };
Im receiver der eject-action sollten alle files freigegeben werden, sodass die Karte auf dem PC gemountet werden kann.

Problem ist aber, das die Activity beendet wird bevor der Intent darin ankommt. Was zur Folge hat das onPause eher aufgerufen wird als der Intent ankommt was wiederrum zur Folge hat das der Intent gar nicht mehr ankommen kann.
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
dann ruf unregister halt erst in onDestroy auf..
 
U

Unicate

Erfahrenes Mitglied
Naja, prinzipiell jast du ja recht, aber wenn onPause aufgerufen wird, dann heisst das ja das die Activity sowieso schon beendet wird. was zur Folge hat, das wenn ich es schaffe auf das EJECT zu reagieren, die Activity sich aber trotzdem schliessen wird.
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
starte deine app einfach neu im broadcastreceiver
 
Ähnliche Themen - Das Beenden einer Activity vermeiden... Antworten Datum
3
20