O documento fornece dicas de performance para aplicativos Android, incluindo usar tipos de dados apropriados em Java, otimizar o SQLite, usar StringBuilder em vez de String, e escolher as coleções corretas para cada problema.
4. Não use memória se não há
necessidade
byte = inteiro com sinal (1 byte)
short = inteiro com sinal (2 bytes)
int = inteiro com sinal (4 bytes)
long = inteiro com sinal (8 bytes)
float = ponto flutuante (4 bytes)
double = ponto flutuante (8 bytes)
char = caractere (2 bytes)
boolean = true ou false (1 bit)
String = Uma seqüência de caracteres
Amélia Pessoa
7. Proguard
# To enable ProGuard to shrink and obfuscate your code, uncomment this
(available properties: sdk.dir, user.home):
proguard.config=proguard.cfg
-optimizationpasses 5
-allowaccessmodification
-optimizations !code/simplification/arithmetic,!field/*,!
class/merging/*,!code/allocation/variable
-keepattributes *Annotation*
-keep
-keep
-keep
-keep
-keep
public
public
public
public
public
Amélia Pessoa
class
class
class
class
class
*
*
*
*
*
extends
extends
extends
extends
extends
android.app.Activity
android.app.Application
android.app.Service
android.content.BroadcastReceiver
android.content.ContentProvider
8. Utilize a sintaxe de loop for
aprimorada
public void loop1() {
int soma = 0;
for (int i = 0; i < testArray.length; ++i) {
soma += testArray[i].valor;
}
}
public void loop2() {
int soma = 0;
Test [] localArray = testArray;
int len = localArray.length;
for (int i = 0; i < len; ++i) {
soma += localArray[i].valor;
}
}
public void loop3() {
int soma = 0;
for (Test a : testArray) {
soma += a.valor;
}
}
Amélia Pessoa
10. Use indexes
CREATE TABLE mytable (
a TEXT PRIMARY KEY, -- index created
b INTEGER,
c TEXT UNIQUE
-- index created
);
CREATE INDEX statement...
Amélia Pessoa
11. Não use length() em strings
longas
Exemplos:
Troque (WHERE length(str)=0) por (WHERE str='');
(WHERE length(str)==3) pode ser (WHERE str LIKE '___').
Amélia Pessoa
12. Use IN ao invés de OR
"x IN ('A', 'B')"
Ao invés de "x='A' OR x='B'"
Amélia Pessoa
17. Set
HashSet: Sem nenhuma sequência ou ordenação. Essa coleção é usada
para elementos não-duplicados e a ordem não importa.
LinkedHashSet: é uma Hashset com ordenação natural, ou seja, ao inserir
na lista e depois iterá-la a ordem é mantida.
TreeSet: é um Set com ordenação natural ou especificada. Comumente, se
usa elementos com Comparable ou Comparator, para se inserir já de
maneira ordenada. Internamente, a TreeSet usa e estrutura de árvore.
Amélia Pessoa
18. List
ArrayList: Como o nome já diz, é uma abstração de um array. Tem rápida
iteração e rápido acesso rândomico. Os seus elementos possuem uma
sequência natural por índice, porém essa coleção não é ordenada.
Implementa java.util.List e extende de java.util.Collection.
Vector: Igual a ArrayList em todos os sentidos, exceto que suas operações
são mais custosas (lentas), pois todos seus métodos são sincronizados. Ou
seja, ela é thread-safe.
Amélia Pessoa
19. List / Queue
LinkedList: Possui seus elementos em sequência por índice, porém seus
elementos são duplamente encadeados uns aos outros. Logo, é fácil inserir
e remover do ínicio ao fim dessa coleção. Escolha em casos onde é preciso
inserir e deletar rapidamente registros. Porém, a iteração é um pouco mais
lenta do que comparado ao ArrayList. Implementa a interface Queue
também.
PriorityQueue: É uma Queue de prioridades. Os elementos são inseridos
com ordenação natural ou especificada dado por um Comparable ou
Comparator.
Amélia Pessoa
20. Map
HashMap: Mapeamento chave-valor, sem ordenação nenhuma. Aceita uma
chave nula, e múltiplos elementos nulos.
Hashtable: é a HashMap com duas diferenças: é thread-safe, e não possui
elementos e nem chaves nulos.
LinkedHashMap: similar ao LinkedHashSet é um HashMap com
ordenação natural. Possui mais rápida iteração, porém nas operações de
inserir e remover será mais lenta. Possui opção de ordenação natural ou
LRU (por último acessado) em seu construtor.
TreeMap: similar a TreeSet, é um Map com ordenação natural (caso um
Comparable ou Comparator não seja especificado).
Amélia Pessoa