Così abbiamo visto l'anteprima di sdk e le nuove cose come ActionBar e Fragments. Fare molte chiamate al metodo sarà inevitabile per farne uso, quindi quali strategie ci sono per mantenere la versione 1 dell'app, che mi consentirà di utilizzare tutte le novità più snelle ma anche di lavorare su dispositivi con 2.3 o meno? La mia app punta da 1,5 a 2,3 al momento.Strategie per Honeycomb e retrocompatibilità
risposta
Le stesse API di frammento sono ora disponibili come static library da utilizzare con versioni precedenti di Android; è compatibile con Android 1.6.
Ci sono alcuni trucchi che è possibile utilizzare per vedere se le varie nuove API sono disponibili per la tua app. In generale, probabilmente vorrai creare due serie alternative di attività, una che usi le nuove fantasiose API (ActionBar, animatori, ecc.) E un'altra che non lo fa.
Il codice seguente mostra come utilizzare la riflessione e l'eccezione per rilevare la disponibilità delle API di Fragment e il controllo della versione per confermare se sono disponibili altre API Honeycomb.
private static boolean shinyNewAPIsSupported = android.os.Build.VERSION.SDK_INT > 10;
private static boolean fragmentsSupported = false;
private static void checkFragmentsSupported() throws NoClassDefFoundError {
fragmentsSupported = android.app.Fragment.class != null;
}
static {
try {
checkFragmentsSupported();
} catch (NoClassDefFoundError e) {
fragmentsSupported = false;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent startActivityIntent = null;
if (!shinyNewAPIsSupported)
startActivityIntent = new Intent(this, MainNonActionBarActivity.class);
else
startActivityIntent = new Intent(this, MainActionActivity.class);
startActivity(startActivityIntent);
finish();
}
In generale è possibile utilizzare le stesse definizioni di layout. Laddove sono disponibili frammenti, gonfierete ciascun layout all'interno di un frammento diverso, dove probabilmente non vorrete usare i tag <include>
per incorporarli in un layout di attività più complesso.
Un lavoro di approfondimento attraverso di come scrivere il codice per supportare la compatibilità all'indietro su Honeycomb può essere trovato qui: http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
È possibile trovare utile il numero article on backwards-compatibility di Reto Meier, in particolare la sezione "Gestione delle classi mancanti".
Devo ancora guardare l'SDK Honeycomb da solo ma, come te, spero che sia abbastanza semplice e senza problemi utilizzare le nuove funzionalità senza compromettere la compatibilità con i dispositivi meno recenti.
controllare anche questo post, che dà più esempi di lavoro con più versioni della piattaforma: http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html – adamp
Ho letto entrambi, ma sembra che Honeycomb sarà più coinvolto, specialmente con cose come Fragments e ActionBar. Pensi che usare queste tecniche sarà sufficiente? –
Convenientemente, Dianne Hackborne di Google ha pubblicato a blog entry che copre questo argomento esatto. Google afferma che fornirà librerie statiche in modo che anche le versioni precedenti di Android possano utilizzare i frammenti.
Beh Google a nido d'ape appena annunciato sarà tablet solo: http://www.pcmag.com/article2/0,2817,2379271,00.asp
Così, se il dispositivo è destinato per il mobile solo questo può anche non essere un problema.
ufficiale Android campione che vi aiuteranno a raggiungere ActionBar from 1.6 to 4.x
- 1. Retrocompatibilità e servizi Web
- 2. parMap parallelo e strategie
- 3. Protobuf-net enum retrocompatibilità
- 4. Jenkinsfile e diverse strategie per le diramazioni
- 5. Versioning di classe per supportare la retrocompatibilità
- 6. Strategie per trovare Heisenbugs
- 7. MS Office PIA "retrocompatibilità"
- 8. Strategie di ramificazione e fusione
- 9. Appropriata alternativa a PopupMenu per pre-Honeycomb
- 10. Caricatori in Android Honeycomb
- 11. Honeycomb ActionBar Title Shadow
- 12. Come utilizzare MediaSessionCompat e mantenere la retrocompatibilità con RemoteControlClient?
- 13. Come posso evitare metodi deprecati e mantenere la retrocompatibilità?
- 14. Android WebView 302 Redirect - Honeycomb
- 15. Strategie per la gestione dell'autenticazione e dell'autorizzazione utente multipiattaforma
- 16. Buone strategie per lo sviluppo di codice usa e getta?
- 17. Strategie per rilevare e eliminare aggregazioni ingombranti di punti GPS?
- 18. Branching strategie con Maven, TeamCity e TFS
- 19. Cambio di orientamento in Honeycomb
- 20. Data Mapper e relazioni: strategie di implementazione?
- 21. Quali progetti Java sono esplicitamente eseguiti per supportare la retrocompatibilità?
- 22. Ridenominazione delle funzioni con conservazione della retrocompatibilità
- 23. Aggiornamento storyboard a iOS 6 con retrocompatibilità
- 24. Strategie per la sostituzione di oggetti sistemici
- 25. Strategie per testare codice reattivo asincrono
- 26. Script linker: strategie per il debugging?
- 27. Strategie per la crittografia con Django + Postgres?
- 28. Strategie di benchmark per query singole MySQL
- 29. strategie per la gestione di attività HardDeadlineExceededError
- 30. .Net - Strategie per evitare stringa magica
Anche se l'unica API aggiuntiva richiesta è la barra delle azioni, dare un'occhiata a una libreria che ho scritto che è un'estensione della libreria di compatibilità che aggiunge proprio questo. Fornisce un'unica API per la barra delle azioni e consente l'uso di un singolo tema. Puoi trovare maggiori informazioni su http://actionbarsherlock.com. –