Upload
alexander-shaubert
View
310
Download
2
Embed Size (px)
Citation preview
EXPLODIN
G HEAD IS
SUES
MA
Y C
OL L E
CT
I ON
BE CAREFUL WITH THREADS
What’s wrong with that code?
2
public class Main extends Activity { private Thread t = new Thread() { public void run() { doWork(); }; }
...}
ОНИ ТОЛЬКО И ЖДУТ, ЧТОБЫ ПОДСТАВИТЬ ТЕБЯ
Этот код приведет к лику всей активити и всего, на что она ссылается. Утечка происходит из-за добавления Thread в ThreadGroup при его создании.
http://code.google.com/p/android/issues/detail?id=7979
3
ВСЕГДА ЗАКРЫВАЙТЕ ФАЙЛОВЫЕ ПОТОКИ
4
private void readFromFile(String filename) throws FileNotFoundException, IOException { File f = new File(filename); InputStream inputStream = null; try { inputStream = new FileInputStream(f); //do read operations } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { //Log or ignore } } } }
ИНАЧЕ
Ваш процесс прибьют, как только пользователь решит примонтировать SD-Карту.
5
МЕНЮ
Никогда, если не преследуете особой цели, не перекрывайте метод onMenuItemSelected() Activity. Существуют два специальных метода onOptionsItemSelected() и onContextItemSelected().
6
PENDING INTENT
7
private void postNotification(Intent intent) { ... Context context = getApplicationContext(); CharSequence contentTitle = "My notification"; CharSequence contentText = "Hello World!"; PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); mNotificationManager.notify(NOTIFICATION_ID, notification); }
PENDING INTENT FLAGS
8
Если не хотите получить непрадсказуемое поведение, всегда обращайте внимание на флаги у PendingIntent
EXCESS SCROLL ON SAMSUNG LISTVIEW
Производители могут легко вносить изменения в базовые классы платформы. Если вы добавляете «свое» поведение, перекрывая один из методов компонента, будьте готовы, что ваше решение может провалиться на некоторых девайсах. Например, это касается практически всех реализаций pull-to-refresh, что я видел.
9
СПАСИБО
Презентацию подготовил
Шауберт Александр
Специально для Android May Days 2011
10