Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução à Programação Android

Introdução à Programação Android

Slides do minicurso de introdução ao desenvolvimento Android que ministrei na Semana da Computação do ICMC na USP, em São Carlos.

Ubiratan Soares

October 08, 2013
Tweet

More Decks by Ubiratan Soares

Other Decks in Technology

Transcript

  1. downloads de apps no Google Play 50+ BILHÕES de ativações

    por dia 1.5+ MILHÕES de aparelhos 1+ BILHÃO ALGUNS FATOS
  2. VERSION API LEVEL NICK 1.5 3 Cupcake 1.6 4 Donut

    2.0, 2.0.1, 2.1 5, 6, 7 Éclair 2.2 8 Froyo 2.3.x 9, 10 Gingerbread 3.x.y 11 ,12 ,13 Honeycomb 4.0.x 14 Ice Cream Sandwich 4.1.x 15,16 Jelly Bean 4.2.x 17 Jelly Bean 4.3 18 Jelly Bean 4.4 19 Kit Kat http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels
  3. LINUX KERNEL DRIVERS (USB, Bluetooth, Sensors, etc) Power Management Process

    Management Networking IPC ANDROID LIBRARIES DALVIK VM ANDROID RUNTIME NATIVE LIBRARIES Graphics (OpenGL ES, FreeType, etc) libc Webkit SSL SQLite Media Framework Surface Manager ANDROID FRAMEWORK ACTIVITY MANAGER WINDOW MANAGER TELEPHONY NOTIFICATIONS VIEWS SYSTEM LOCATION MANAGER PACKAGE MANAGER RESOURCES MANAGER
  4. Implementação compacta, baseada em registradores Menor consumo de memória, GC

    paralelo e concorrente CPUs lentas, suportadas por bateria Formato próprio de instruções https://sites.google.com/site/io/dalvik-vm-internals DALVIK VIRTUAL MACHINE
  5. LINUX KERNEL INIT DALVIK VM TouchWiz HEAP + LIVE CODE

    ZYGOTE SHARED DALVIK VM Google Maps HEAP + LIVE CODE ZYGOTE SHARED DALVIK VM Your App HEAP + LIVE CODE ZYGOTE SHARED PRE-LOADED RUNTIME ZYGOTE fork() fork() fork()
  6. A princípio, cada app em seu processo Linux Outras aplicações

    não tem conhecimento dos seus dados Aplicações não podem impactar em outras aplicações, no sistema ou com a experiência do usuário (a menos que compartilhados) (a menos que o mesmo autorize) APPLICATION SANDBOX
  7. Concedidas em tempo de instalação do app Android NÃO FAZ

    CONCESSÕES em tempo de execução Impostas e verificadas pelo KERNEL PERMISSÕES
  8. http://developer.android.com/guide/topics/security/permissions.html ACCESS_COARSE_LOCATION READ_CONTACTS ACCESS_FINE_LOCATION READ_SMS CALL_PHONE READ_CALENDAR CAMERA READ_CALL_LOG DELETE_PACKAGES

    SEND_SMS INTERNET ACCOUNT_MANAGER RECEIVE_SMS WRITE_CALENDAR SET_ALARM WRITE_EXTERNAL_STORAGE WAKE_LOCK WRITE_SETTINGS http://developer.android.com/reference/android/Manifest.permission.html
  9. YOUR APP HERE! Android Framework Runtime Native Libraries Linux Kernel

    SoC Hardware Acessado pela API Java Core JDK 1.6 (exceto Swing, AWT) Android APIs (Activity, Views, etc) OSS Extras (JSON, HTTP, DOM, etc) + +
  10. Para o Android 4.3 (API 18) 211 pacotes 3697 classes

    29019 métodos ANDROID FRAMEWORK
  11. “Representam a tela” Tem a responsabilidade de gerenciar uma interface

    criada por você frente as interações do usuário Podem ser entendidas como um CONTROLLER para as VIEWS com as quais o usuário interage ACTIVITIES
  12. Objeto com instância controlada pelo sistema Possui um ciclo de

    vida bem definido Você, como programador, NÃO TEM CONTROLE do estado no qual uma Activity se encontra, mas o sistema IRÁ TE AVISAR das transições https://developer.android.com/reference/android/app/Activity.html ACTIVITIES
  13. STARTING onCreate( ) onStart( ) onResume( ) onPause( ) onStop(

    ) onRestart( ) onDestroy( ) VISIBLE INVISIBLE TERMINATED Relaunching Back to foreground Sent to background User navigates back to activity Terminated by Android or Finishing
  14. Android PODE MATAR uma Activity que não está mais visível

    a qualquer instante Android EXTERMINA o processo no qual a sua aplicação roda se julgar necessário (condições críticas) Regras de prioridade buscam preservar ao máximo a experiência do usuário CONTROLE DE RECURSOS
  15. Se defender de situações críticas, mantendo o estado do seu

    aplicativo sempre consistente Utilizar mecanismos para garantir a execução de tarefas de longa duração, se necessário Ser justo com outras aplicações para preservar a experiência do usuário como um todo SUA RESPONSABILIDADE
  16. ACTIVITY #01 BACKSTACK ACTIVITY #02 BACKSTACK ACTIVITY #01 ACTIVITY #03

    BACKSTACK ACTIVITY #01 ACTIVITY #02 ACTIVITY #02 BACKSTACK ACTIVITY #01 startActivity( ) onBackPressed( ) startActivity( ) https://developer.android.com/guide/components/tasks-and-back-stack.html
  17. Mensagens para ativação de componentes Estão para aplicações Android como

    hyperlinks estão para páginas Web Explícitos ou Implícitos (mecanismo de multitasking) Podem carregar dados e informações de ação INTENTS https://developer.android.com/guide/components/intents-filters.html
  18. ACTIVITY startActivity( new Intent(this, MyActivity02.class ) ) SERVICE startService( new

    Intent(this, MyService.class ) ) RECEIVER sendBroadcast( new Intent(“com.custom.action”) ) ACTIVITY
  19. Componente para execução de operações que não estão associadas à

    UI (em geral, de longa duração) Podem ser locais ou remotos (consumíveis por outras aplicações ) Aumentam a prioridade da sua aplicação frente à política de controle de recursos ! SERVICES https://developer.android.com/guide/components/services.html
  20. System Services Sensor Manager Other Managers Compass App Compass Activity

    Others Activitys SensorManager manager = (SensorManager) getSystemService(SENSOR_SERVICE); CompassActivity.java BINDER IPC
  21. Componente capaz de esperar mensagens, via runtime, de forma assíncrona

    e independente do estado do app Fundamental para “ouvir” eventos de interesse do sistema! PUSH NOTIFICATIONS TOCAR O TELEFONE BATERIA CONECTIVIDADE BROADCAST RECEIVER https://developer.android.com/training/monitoring-device-state/manifest-receivers.html
  22. Mecanismo para compartilhamento de dados entre aplicações Contacts App Contacts

    Activity SQLITE CONTACTS PROVIDER insert( ) query( ) delete( ) update( ) BUILT-IN PROVIDERS Data and Contracts CONTENT PROVIDERS
  23. STUNNINGAPP PROJECT RESOURCES Images Layouts Drawables .... CODE Java, NDK

    AndroidManifest BUILDING SIGNING APLICATIVOS !!! stunning.apk
  24. SOURCE (suas classes e pacotes próprios) RESOURCES (imagens, layouts, strings,

    valores pré- definidos, arquivos, XML de configuração, etc) MANIFEST (componentes)
  25. DIVERSIDADE Mais de 900 aparelhos, com telas de diversos tamanhos

    e resoluções Android foi projetado para lidar com diversas configurações de tela, de modo adaptativo e responsivo Existe fragmentação na Web ???
  26. DENSIDADES DE TELA DPI (aproximado) QUALIFICADOR 120 ldpi (low) 160

    mdpi (medium - baseline) 240 hdpi (high) 320 xhdpi (extra high) acima de 320 xxhdpi (extra extra high)
  27. Device Size Pixel Width Pixel Height DPI Qualifier Galaxy S1

    4 480 800 233 hdpi Galaxy S2 4.3 480 800 219 hdpi Galaxy S3 4.8 720 1280 306 xhdpi Galaxy S4 5 1080 1920 441 xxhdpi iPhone 3GS 3.5 320 480 163 mdpi iPhone 4 3.5 640 960 306 xhpdi iPhone 5S 4 640 1136 326 xhdpi Galaxy Tab I 7 600 1024 171 mdpi Nexus 7 II 7 1080 1920 323 xhdpi http://screensiz.es
  28. DENSITY INDEPENDENCE “Sua aplicação atinge density independence se, para diferentes

    características de tela, o usuário não percebe variações de tamanho para elementos de interface.” http://developer.android.com/guide/practices/screens_support.html
  29. SUPORTE À MÚLTIPLAS DENSIDADES Ajuste automático de tamanhos de acordo

    com a densidade corrente, desde que essas estejam na unidade dp Redimensionamento de imagens proporcionalmente para o tamanho adequado, segundo a densidade de tela Sistema de gerenciamento de recursos
  30. Android possui um sistema de gerenciamento de recursos para sua

    aplicação extremamente poderoso e flexível Baseado em combinação de qualificadores e convenções Android determina o recurso correto a ser utilizado em tempo de execução APPLICATION RESOURCES
  31. LAYOUTS E VIEWS Definem a estrutura visual da sua interface

    (apresentação) Em geral, serão sempre configurados em XML com o apoio do editor de interface UI é composta por uma hierarquia de diversos objetos de Views e View Groups
  32. A B C A B A B C Linear Layout

    (Vertical) Linear Layout (Horizontal) Relative Layout
  33. DEMO Conhecer o Android Studio Treinar construção de layouts Programar

    lógica de interface Ver o ciclo de vida de uma Activity
  34. Documentação Oficial Android Training Discussões Online POR ONDE CONTINUAR http://developer.android.com/training

    http://developer.android.com Eventos da Comunidade http://www.meetup.com/GDG-SP
  35. Demanda MUITO maior que a oferta de profissionais Em geral,

    poucos hoje são REALMENTE QUALIFICADOS Mercado ainda em consolidação (não conte com um ambiente corporativo) MOBILE E MERCADO
  36. Você vai trabalhar mais do que a maioria dos seus

    colegas gestores, vendedores, “analistas” e afins Se acertar, tem tudo para estar sempre gratificado com a sua profissão Se for bom, dificilmente ficará desempregado PARA QUEM PRETENDE SER DEV