L'attività di avvio della mia app verifica una serie di requisiti come se il GPS è abilitato, c'è una connessione di rete, l'app ha i privilegi di amministratore del dispositivo, ecc. Alcuni di questi controlli visualizzano le finestre di dialogo o portano l'utente a un'altra attività per risolvere i requisiti insoddisfatti . Sto cercando un modo per farlo facile da estendere con più requisiti e facile da leggere e capire per gli altri.
La mia soluzione originale era di eseguire i controlli in sequenza, ognuno nel suo metodo, con ciascun metodo che prendeva azione correttiva o chiamava il metodo successivo nella sequenza. La sequenza è iniziata in onResume()
, quindi al ritorno da un'altra attività riprende con il primo controllo che non passa. Questo è diventato veloce perché alcuni requisiti sono condizionali. Ad esempio, su Lollipop controlla se l'app è il proprietario del dispositivo e se potrebbe essere in grado di diventare il proprietario del dispositivo. Se possibile, indica all'utente di eseguire il comando adb shell
appropriato. Naturalmente, l'intera sequenza di controlli viene saltata su KitKat. Quindi la catena di metodi è in realtà più simile a una treccia intrecciata. È difficile rintracciarne la logica o verificare che ogni passo alla fine chiami il prossimo in tutte le possibili condizioni. Sono riluttante a apportarvi modifiche e l'ho appena scritto un paio di settimane fa.
La mia altra idea era di numerare i passi (o associarli agli elementi di un enum
) e passare il passaggio completato da ultimo tra le istanze di attività. Ma prevedo che anche questo sia complicato.
Come struttureresti questo?