Android開発の基礎_20101218

4,484
-1

Published on

2010/12/18 スパイシーソフトさんで開かれた勉強会「スパイシーカレッジ」での資料です。

0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,484
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
54
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • 端末には本当に予測もつかない自体がよく起こるので、\n忘れがちなので一覧をチェックしておくことがお勧め\n
  • 日本語訳すると意図・意志\n\n\n
  • \n
  • 次から各コンポーネントの詳細\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ここまでがライフサイクルの説明\n次は別Activityの起動について\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 音楽サービスでは、たとえばPHONE_STATEやMEDIA_REMOVEなどを使う。\nこれを受けないとどういうことが起こるかというと、電話がかかってきてもバックグラウンドのサービスによる音楽再生は続けられてしまう。電話がかかってきたらBroadcastReceiverで検知して、Serviceに対して停止命令を出す、という処理が必要。(同様に電話が終わったら、再開命令を出す)\n
  • onReceiveの間しか生存期間がないので、さっき説明したServiceにbindするような非同期処理は行うことができない。Serviceとは、お互いIntentでやり取りするなど工夫する必要がある。\n
  • \n
  • \n
  • 1個目は電話がかかってきたBroadcastを受ける\n2個目は音楽ファイルデータに対してのIntentを受けられることを示す。これを書いておくと、たとえばGmailでの添付ファイルで音楽ファイルが選択された際とかにアプリケーション候補一覧に表示される。\n3個目はブラウザで特定のスキーマ名、ホスト名、パスのリンクを押されたときに、候補一覧に表示させるためのフィルタ。httpでなくても独自スキーマも定義できる。\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • OSのバージョンで処理を切り分けることができるので2.1や2.2の新機能はフルに使った方がよい。Flash,マルチタッチ,C2DM,ライブ壁紙,HTML5など。またAPIによっては大幅な変更がある場合もあるので注意。たとえば連絡先など。\n
  • UXの向上にチューニングは絶対必要な作業\n200ms応答がなければそれはもうジャンクなアプリ\n\n
  • \n\n
  • 実際にアプリケーションを開発してみて、基本的な構成要素の理解が非常に重要かと思った。\nandroid developersにも開発の基礎というページがあって、それを読むと今日説明した内容がさらに深く分かると思う。\nアプリ間やコンポーネント間の柔軟な連携は、Androidならではの仕組みでとても面白い。\n今日説明して内容は膨大にあって、たとえばUI・チューニング・テストは重要。\n
  • Android開発の基礎_20101218

    1. 1. Android @thorikawa
    2. 2. Soft ware Engineer, MTI Ltd. android apps “music.jp”Blog: http://d.hatena.ne.jp/thorikawa/FiremobileSimulator http://firemobilesimulator.org/ (iPhone/iPad app)t witter: @thorikawa
    3. 3. Android Activity Service BroadcastReceiver Intent ContentProvider
    4. 4. Activity Activity
    5. 5. Service
    6. 6. BroadcastReceiver SD
    7. 7. Intent Activity,Ser vice,BroadcastReceiver URI
    8. 8. ContentProvider
    9. 9. actionUser Activity Content Provider Service Intent BroadcastReceiverEvent
    10. 10. Activity
    11. 11. onCreate() xml Intent
    12. 12. onStart()
    13. 13. onResume() Activity
    14. 14. onPause() Activity
    15. 15. onStop()
    16. 16. onDestroy() MediaPlayer.release() WebView.destroy()
    17. 17. ActivityIntentActivity.startActivity()Activity.startActivityForResult()
    18. 18. 1 = 1 Activity
    19. 19. Service
    20. 20. 2Context.startSer vice() Ser viceIntentContext.bindSer vice() Ser vice RPC
    21. 21. startService() vs bindSer vice() + RPC startSer vice() Intent bindService() bind RPC
    22. 22. startService() Ser vice.onStart() Intent
    23. 23. bindService() bind bind Ser vice
    24. 24. Broadcast Receiver
    25. 25. Intent actiononReceive() (Intent) onReceive()
    26. 26. android.intent.action.PHONE_STATEandroid.intent.action.BOOT_COMPLETEDandroid.intent.action.TIMEZONE_CHANGEDandroid.intent.action.MEDIA_REMOVED
    27. 27. App Widget BroadcastReceiveronReceive() onReceive()
    28. 28. Intent
    29. 29. Intent Intent Intent Activity Intent Activity
    30. 30. AndroidManifeset.xml Intent Filter Intent<intent-filter> <action android:name="android.intent.action.PHONE_STATE" /></intent-filter><intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:mimeType="audio/*" /></intent-filter><intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" /> <data android:host="example.com" /></intent-filter>
    31. 31. Content Provider
    32. 32. Content Uri(content:/ / / URL)
    33. 33. query update SQLite insert delete etc... Client File Content Provider ex)ActivityInternet
    34. 34. content://media/ MediaProvider content://media/external/images/ media content://media/external/images/ media/1
    35. 35. ContentProvider ContentResolver
    36. 36. Uri imagesUri = Images.Media.getContentUri("external"); Cursor cursor = getContentResolver().query( imagesUri, // Content Uri new String[] { ImageColumns.TITLE }, // null, // null, // null // ); while(cursor.moveToNext()) { ... } corsor.close();
    37. 37. ContentProviderContentProvider
    38. 38. public class MyContentProvider extends ContentProvider { @Override public boolean onCreate() { // ... } @Override public Uri insert(Uri uri, ContentValues values) { ... } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { ... } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { ... } @Override public String getType(Uri uri) { // Content Uri ... } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { ... } @Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { // ... }}
    39. 39. AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="a.b.c" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="x"> <provider android:name=".MyContentProvider"android:authorities="hoge" /> </application> <uses-sdk android:minSdkVersion="4" /></manifest> content://hoge/ MyContentProvider
    40. 40. My App Mail App action: Intent.ACTION_SEND extra: EXTRA_STREAM=content:/ /hoge/1 IntentActivity Activity query openFile Content Provider authorities="hoge"
    41. 41. ActivityActivity
    42. 42. Android Activity, Service, BroadcastReceiver, Intent, ContentProviderIntent ContentProvider

    ×