Come posso gestire al meglio le stringhe di filtro Android Intent su più progetti?

8

Nel mio progetto IntentExamples, ho questo filtro, corrispondente a un servizio.

<intent-filter>
                <action android:name="biz.rpcodes.apps.intentexamples.START_SERVICE" />
</intent-filter>

In un altro progetto, UseExampleService, ho qualcosa del tipo:

Intent i = new Intent("biz.rpcodes.apps.intentexamples.START_SERVICE");
                startService(i);

... guidato da questa risposta: link

La mia domanda è: come posso gestire al meglio queste stringhe di filtro Intent su più progetti? La soluzione migliore che ho ora è di creare una classe che copio e incollo dal progetto di servizio negli altri progetti, cioè:

class ExampleServiceIntents {
public static final String ExampleServiceIntents.START_SERVICE = 
    "biz.rpcodes.apps.intentexamples.START_SERVICE";
...

Mentre potrei importare autonomamente le classi di servizio, new Intent(this, ExampleService.class) , vorrei mantenere le classi di servizio nel loro progetto.

    
posta Rick Page 16.11.2015 - 05:33
fonte

1 risposta

1

Librerie condivise Android o collegamenti simbolici dipendenti dal sistema operativo.

Opzione 1: Libreria Android condivisa

Una libreria Android formale importata in ogni progetto.

Pro : digita sicurezza. Cross-platform e funziona con il controllo del codice sorgente. Controllo completo della sintassi e supporto dell'editor.

Contro : è ancora un po 'noioso importare progetti come librerie tramite gli editor correnti (Android Studio o Eclipse con ADT) poiché non offrono interfacce molto buone per farlo. Se devi svolgere questo compito spesso, ma non così spesso, ti ricordi tutti i passaggi ogni volta, allora questo potrebbe non valerne la pena. Ma se è una cosa una o due per cominciare, non devi farlo di nuovo, non è male.

Link simbolici opzione 2

Collegare simbolicamente un file sorgente comune in ogni progetto. Quindi entrambi i progetti vedranno il file e le modifiche, in modo che possano rimanere sincronizzati.

Pro : molto più semplice da implementare.

Contro : i collegamenti simbolici non funzionano così bene con gli strumenti di controllo del codice sorgente. Non multipiattaforma (per lo sviluppo) poiché i collegamenti simbolici sono molto diversi da un sistema operativo all'altro. Non è chiaro ad un nuovo sviluppatore che entra nel progetto che cambia in uno automaticamente viene condiviso con l'altro.

Pertanto, poiché l'opzione dei link simbolici ha più svantaggi allora, raccomanderei generalmente la soluzione di libreria condivisa per la maggior parte dei progetti. Ma, se il tuo progetto particolare non ha bisogno delle caratteristiche dalla colonna di contro del collegamento simbolico, allora è probabilmente più facile. Dipende.

PS: c'è una terribile terza opzione di avere una terza applicazione completa per Android che offre un provider di dati Android che offre i valori della stringa. Ma a quel punto devi comunicare con quell'app con stringhe speciali che devono essere condivise, quindi stai solo aggiungendo un passaggio all'astrazione ma non hai risolto il problema.

    
risposta data 18.11.2015 - 22:43
fonte

Leggi altre domande sui tag