Ho appena aggiunto la possibilità per un utente di ripristinare i propri dati nella mia app eseguendo il backup di un tipo di file personalizzato. Quando il file viene aperto da un file explorer con la mia app, la mia attività principale (principale) viene aperta, ma in una nuova istanza. Ad esempio, se la mia app è aperta e il file di ripristino è aperto da un file explorer, una nuova istanza della mia app si apre nella mia attività principale. Nel task manager di Android, sembra che la mia app sia in esecuzione all'interno di Esplora file, se questo ha senso. Poiché il processo di ripristino cambia i dati dell'utente, è possibile che l'istanza originale della mia app smetta di funzionare perché si trovava in un'attività dipendente dai dati.Come gestire più istanze di app quando si accede tramite un diverso intento
Come è possibile impedire più istanze della mia app quando si accede tramite un diverso scopo come questo? Grazie.
Aggiornamento: ho cercato in giro e ancora non riesco a trovare una soluzione. L'aiuto sarebbe apprezzato
intent-filtro per la mia attività principale nel manifesto:
<manifest
android:launchMode="singleInstance"
...
<application
android:... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" android:pathPattern=".*\\.grdcsv" android:mimeType="*/*" android:host="*"/>
</intent-filter>
<!-- For email attachments -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/octet-stream" android:pathPattern=".*\\.grdcsv" android:scheme="content" />
</intent-filter>
Grazie perché * * * impedisce l'avvio come una nuova istanza. Tuttavia, ho visto due effetti collaterali indesiderati. 1) Quando avvio l'app in esecuzione dal collegamento sul desktop, inizia con l'attività di root anziché da dove l'utente era stato interrotto. 2) Quando apro la mia estensione di file personalizzata con l'app, l'app si avvia all'attività root senza richiamare l'azione per il file. Devo avviare di nuovo l'attività per ottenere quel comportamento. È come se gli intenti si confondessero. – NSouth
@NSouth Prova 'singleTop' invece di' singleTask'. Che succede ora? –
Questo è in realtà quello che era prima. Potrei semplicemente lasciarlo perché sto facendo questo solo se stanno ripristinando i loro dati. Se hanno un'istanza aperta e i dati sottostanti cambiano attraverso un'altra istanza, andranno in crash ma dovrebbero andar bene da lì. Io spero. – NSouth