ãã®èšäºã§ã¯ãAndroidã¢ããªãæ§æããã³ã³ããŒãã³ããšããã®ã¢ãŒããã¯ãã£ã®èåŸã«ããã¢ã€ãã¢ã«ã€ããŠèª¬æããŸãã
ã·ãªãŒãºèšäºïŒ
- Androidã®ä»çµã¿ãããŒã1
- Androidã®ä»çµã¿ãããŒã2
- Androidã®ä»çµã¿ãããŒã3
- Androidã®ä»çµã¿ãããŒã4
- ...
Web vsãã¹ã¯ããã
ææ°ã®Webã¢ããªã±ãŒã·ã§ã³ãšãéåžžã®ããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®éããèãããšãæ¬ ç¹ã®äžã§ããWebã®ããã€ãã®å©ç¹ã匷調ã§ããŸãã
- Webã¢ããªã±ãŒã·ã§ã³ã¯ã Javaã®ããã« ãã¢ãŒããã¯ãã£ãšãã©ãããã©ãŒã éã§ç§»æ€å¯èœã§ãã
- Webã¢ããªã±ãŒã·ã§ã³ã¯ã€ã³ã¹ããŒã«ãå¿ èŠãšããã Android Instant Appsãšåæ§ã«åžžã«æŽæ°ãããŸã ã
ããã«ãWebã¢ããªã±ãŒã·ã§ã³ã¯ãåããµã€ãå ããã³ãµã€ãéã®äž¡æ¹ã§ãäºãã«ãªã³ã¯ã§ããããŒãžã®åœ¢åŒã§ååšããŸãã ããã«ããããµã€ãã®ããŒãžã¯ãå¥ã®ãµã€ãã®ã¡ã€ã³ããŒãžãžã®ãªã³ã¯ã®ã¿ã«éå®ãããå¿ èŠã¯ãªããå¥ã®ãµã€ãå ã®ç¹å®ã®ããŒãžã«ãªã³ã¯ã§ããŸãïŒããã¯ãã£ãŒããªã³ã¯ãšåŒã°ããŸãïŒã çžäºã«åç §ãããšãåã ã®ãµã€ããçµåãããŠãå ±éã®ãããã¯ãŒã¯ã§ããWebã«ãªããŸãã
1ã€ã®ããŒãžã®è€æ°ã®ã³ããŒïŒãœãŒã·ã£ã«ãããã¯ãŒã¯äžã®è€æ°ã®ãããã¡ã€ã«ãªã©ïŒã¯ãè€æ°ã®ãã©ãŠã¶ãŒã¿ãã§åæã«éãããšãã§ããŸãã ãã©ãŠã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯ãåã ã®ãµã€ãéã§ã¯ãªãåæã»ãã·ã§ã³ïŒã¿ãïŒãåãæ¿ããããã«èšèšãããŠããŸããåãã¿ãå ã§ãç°ãªããµã€ãã®ç°ãªãããŒãžéã§ãªã³ã¯ãããã²ãŒãïŒããã³å±¥æŽãååŸã«ïŒã§ããŸãã
ããã¯ãã¹ãŠãåã¢ããªã±ãŒã·ã§ã³ãåå¥ã«ããããŠå€ãã®å Žåä»ã®ã¢ããªã±ãŒã·ã§ã³ãšã¯ç¬ç«ããŠåäœããããã¹ã¯ãããããšã¯å察ã§ãããã®ç¹ã§ãAndroidã§ã®ã¢ããªã±ãŒã·ã§ã³ã®é 眮æ¹æ³ã¯ãåŸæ¥ã®ãã¢ããªã±ãŒã·ã§ã³ãããWebã«ããè¿ããªããŸãã
掻åãšç®ç
Androidã®ã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ãã®ã¡ã€ã³ãã©ãŒã ã¯activityã§ãã ã¢ã¯ãã£ããã£ã¯1ã€ã®ã¢ããªã±ãŒã·ã§ã³ç»é¢ã§ãã ã¢ã¯ãã£ããã£ã¯ãWebäžã®ããŒãžããã³åŸæ¥ã®ãŠã£ã³ããŠã€ã³ã¿ãŒãã§ã€ã¹ã®ã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠãšæ¯èŒã§ããŸãã
å®éãAndroidã®ãŠã£ã³ããŠãäžäœã¬ãã«ã§ãããŠã£ã³ããŠãããŒãžã£ãŒã¬ãã«ã§ãã éåžžãåã¢ã¯ãã£ããã£ã«ã¯ç¬èªã®ãŠã£ã³ããŠããããŸãã ã»ãšãã©ã®å Žåãã¢ã¯ãã£ããã£ãŠã£ã³ããŠã¯äœ¿çšå¯èœãªç»é¢å šäœã«æ倧åãããŸããã次ã®ããã«ãªããŸãã
- ãŸããAndroidã¯ãã«ããŠã£ã³ããŠã¢ãŒãïŒåå²ç»é¢ããã¯ãã£ãŒã€ã³ãã¯ãã£ãŒãããã«ã¯ããªãŒãã©ãŒã ïŒããµããŒãããŠããŸãã
- 第äºã«ãAndroidã¯è€æ°ã®ãã£ã¹ãã¬ã€ã®æ¥ç¶ããµããŒãããŠããŸãã
- 第äžã«ãã¢ã¯ãã£ããã£ãç»é¢ã®å°ããªéšåãæå³çã«å æããå¯èœæ§ããããŸãïŒ
Theme_Dialog
ïŒã
ããšãã°ãé»åã¡ãŒã«ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåä¿¡ãã¬ã€ã¢ã¯ãã£ããã£ïŒåä¿¡æåã®ãªã¹ãïŒãé»åã¡ãŒã«ã¢ã¯ãã£ããã£ïŒ1æåãèªãïŒãäœæã¢ã¯ãã£ããã£ïŒæåãæžãïŒãèšå®ã¢ã¯ãã£ããã£ïŒèšå®ïŒãªã©ã®ã¢ã¯ãã£ããã£ããããŸãã
1ã€ã®ãµã€ãã®ããŒãžã®ããã«ã1ã€ã®ã¢ããªã±ãŒã·ã§ã³ã®ã¢ã¯ãã£ããã£ã¯ãçžäºã«èµ·åããããšããçžäºã«ç¬ç«ããŠïŒä»ã®ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠïŒèµ·åããããšãã§ããŸãã Webäžã§å¥ã®ããŒãžã«URLïŒãªã³ã¯ïŒã§ã¢ã¯ã»ã¹ãããšãAndroidã¢ã¯ãã£ããã£ã§ã¯ããããã€ã³ãã³ããä»ããŠèµ·åãããŸãã
ã€ã³ãã³ããšã¯ãã·ã¹ãã ã«ãäœããããããæ瀺ããã¡ãã»ãŒãžã§ãïŒããšãã°ãç¹å®ã®URLãéãããã®ã¢ãã¬ã¹ã«æçŽãæžãããã®é»è©±çªå·ã«é»è©±ãããåçãæ®ããªã©ïŒã
ã¢ããªã±ãŒã·ã§ã³ã¯ãã®ãããªã€ã³ãã³ããäœæããŠã·ã¹ãã ã«æž¡ãããšãã§ããã·ã¹ãã ã¯ã©ã®ã¢ã¯ãã£ããã£ïŒãŸãã¯ä»ã®ã³ã³ããŒãã³ãïŒããããå®è¡ãããïŒãã³ãã«ïŒã決å®ããŸãã ãã®ã¢ã¯ãã£ããã£ã¯ãã·ã¹ãã ã«ãã£ãŠïŒæ¢åã®ã¢ããªã±ãŒã·ã§ã³ããã»ã¹ãŸãã¯ãŸã å®è¡ãããŠããªãå Žåã¯æ°ããããã»ã¹ã§ïŒèµ·åããããã®ã€ã³ãã³ããæž¡ãããŠå®è¡ãããŸãã
ã€ã³ãã³ããäœæããæšæºçãªæ¹æ³ã¯ãAndroidãã¬ãŒã ã¯ãŒã¯ã®å¯Ÿå¿ããã¯ã©ã¹ã䜿çšããããšã§ãã Androidã®ã³ãã³ãã©ã€ã³ããã¢ã¯ãã£ããã£ãšã€ã³ãã³ããæäœããã«ã¯ã am
ã³ãã³ããããam
ããã¯ãæšæºã®ã¢ã¯ãã£ããã£ãããŒãžã£ãŒã¯ã©ã¹ã®ã©ãããŒam
ã
# -a ACTION -d DATA # $ am start -a android.intent.action.VIEW -d http://example.com # $ am start -a android.intent.action.CALL -d tel:+7-916-271-05-83
ã€ã³ãã³ãã¯ã æ瀺ç ïŒæ瀺çïŒããã³æé»ç ïŒæé»çïŒã«ããããšãã§ããŸãã æ瀺çãªã€ã³ãã³ãã¯ãèµ·åããå¿ èŠãããç¹å®ã®ã³ã³ããŒãã³ãã®èå¥åã瀺ããŸã-ã»ãšãã©ã®å Žåãåãã¢ããªã±ãŒã·ã§ã³å ã®1ã€ã®ã¢ã¯ãã£ããã£ããå¥ã®ã¢ã¯ãã£ããã£ãèµ·åããããã«äœ¿çšãããŸãïŒã€ã³ãã³ãã«ã¯ä»ã®æçšãªæ å ±ãå«ãŸããªãå ŽåããããŸãïŒã
æé»ã®ã€ã³ãã³ãã¯ãå®è¡ããã¢ã¯ã·ã§ã³ãå¿
ã瀺ãå¿
èŠããããŸãã åã¢ã¯ãã£ããã£ïŒããã³ä»ã®ã³ã³ããŒãã³ãïŒã¯ãã¢ããªã±ãŒã·ã§ã³ãããã§ã¹ãã§ãåŠçã®æºåãã§ããŠããæå³ã瀺ããŸãïŒããšãã°ããã¡ã€ã³https://example.com
ãªã³ã¯ã®ACTION_VIEW
ïŒã ã·ã¹ãã ã¯ãã€ã³ã¹ããŒã«ãããã³ã³ããŒãã³ãããé©åãªã³ã³ããŒãã³ããéžæããŠèµ·åããŸãã
ã·ã¹ãã ã«ã€ã³ãã³ããåŠçããæºåãã§ããŠããããã€ãã®ã¢ã¯ãã£ããã£ãããå ŽåããŠãŒã¶ãŒã«éžæè¢ãäžããããŸãã ããã¯éåžžãè€æ°ã®é¡äŒŒããã¢ããªã±ãŒã·ã§ã³ïŒããšãã°ãè€æ°ã®ãã©ãŠã¶ãŒãåçãšãã£ã¿ãŒïŒãã€ã³ã¹ããŒã«ãããŠããå Žåã«çºçããŸãã ããã«ãã¢ããªã±ãŒã·ã§ã³ã¯éžæãã€ã¢ãã°ã衚瀺ããããã«ã·ã¹ãã ã«æ瀺çã«èŠæ±ããå ŽåããããŸãïŒå®éãæž¡ãããã€ã³ãã³ãã¯ACTION_CHOOSER
æ°ããã€ã³ãã³ãã«ACTION_CHOOSER
ãããŸãïŒãããã¯éåžžãçŸããå
±æãã€ã¢ãã°ãäœæããããã«äœ¿çšãããŸãã
ããã«ãã¢ã¯ãã£ããã£ã¯çµæããã®åå ãšãªã£ãã¢ã¯ãã£ããã£ã«è¿ãããšãã§ããŸãã ããšãã°ããåçãæ®ãããšããã€ã³ãã³ããåŠçã§ããã«ã¡ã©ã¢ããªã±ãŒã·ã§ã³ã®ã¢ã¯ãã£ããã£ïŒ ACTION_IMAGE_CAPTURE
ïŒã¯ãæ®åœ±ããåçããã®ã€ã³ãã³ããäœæããã¢ã¯ãã£ããã£ã«è¿ããŸãã
ãã®å Žåãå ã®ã¢ã¯ãã£ããã£ãå«ãã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã«ã¡ã©ãžã®ã¢ã¯ã»ã¹èš±å¯ãå¿ èŠãããŸããã
ãããã£ãŠãAndroidã¢ããªã±ãŒã·ã§ã³ãåçãæ®ãæ£ããæ¹æ³ã¯ãã«ã¡ã©ã«ã¢ã¯ã»ã¹ããŠCamera APIã䜿çšããèš±å¯ãå¿
èŠãšãããç®çã®æå³ãäœæããã·ã¹ãã ã«ã¡ã©ã¢ããªã±ãŒã·ã§ã³ã«åçãæ®ãããããšã§ãã åæ§ã«ã READ_EXTERNAL_STORAGE
æš©éã䜿çšããŠãŠãŒã¶ãŒã®ãã¡ã€ã«ã«çŽæ¥ã¢ã¯ã»ã¹ãã代ããã«ãã·ã¹ãã ãã¡ã€ã«ãããŒãžã£ãŒã§ãã¡ã€ã«ãéžæããæ©äŒããŠãŒã¶ãŒã«äžããå¿
èŠããããŸãïŒå
ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã®ãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããŸãïŒã
Androidã·ã¹ãã èšèšã®ãŠããŒã¯ãªåŽé¢ã¯ãã©ã®ã¢ããªã§ãå¥ã®ã¢ããªã®ã³ã³ããŒãã³ããèµ·åã§ããããšã§ãã ããšãã°ããŠãŒã¶ãŒã«ããã€ã¹ã®ã«ã¡ã©ã§åçããã£ããã£ãããå Žåããããããããè¡ãå¥ã®ã¢ããªããããã¢ããªã¯èªåã§åçããã£ããã£ããã¢ã¯ãã£ããã£ãéçºãã代ããã«ããã䜿çšã§ããŸãã ã«ã¡ã©ã¢ããªã®ã³ãŒããçµã¿èŸŒãå¿ èŠãããªã³ã¯ããå¿ èŠããããŸããã 代ããã«ãåçããã£ããã£ããã«ã¡ã©ã¢ããªã§ã¢ã¯ãã£ããã£ãéå§ããã ãã§ãã å®äºãããšãåçã¯ã¢ããªã«è¿ãããŠäœ¿çšã§ããããã«ãªããŸãã ãŠãŒã¶ãŒã«ã¯ãã«ã¡ã©ãå®éã«ã¢ããªã®äžéšã§ãããã®ããã«èŠããŸãã
åæã«ããã·ã¹ãã ãã¢ããªã±ãŒã·ã§ã³ã¯ãã¡ãŒã«ãŒïŒãŸãã¯Androidã¢ã»ã³ããªã®äœæè ïŒã«ãã£ãŠäºåã«ã€ã³ã¹ããŒã«ããããã®ã§ããå¿ èŠã¯ãããŸããã ãã®æå³ã§ããã®æå³ãåŠçã§ãããã¹ãŠã®ã€ã³ã¹ããŒã«æžã¿ã¢ããªã±ãŒã·ã§ã³ã¯åçã§ãã ãŠãŒã¶ãŒã¯ãããã®ããããããã®ãããªintent'ovã®ããã©ã«ãã¢ããªã±ãŒã·ã§ã³ãšããŠéžæã§ããæ¯åé©åãªãã®ãéžæã§ããŸãã ãŠãŒã¶ãŒãã·ã¹ãã ã§çºçãããã®ã¿ã€ãã®ãã¹ãŠã®ã¿ã¹ã¯ïŒã€ãŸããæå³ïŒãå®è¡ããããšãéžæãããšããæå³ã§ãéžæãããã¢ããªã±ãŒã·ã§ã³ã¯ãã·ã¹ãã ãã«ãªããŸãã
ã«ã¡ã©èªäœãžã®ã¢ã¯ã»ã¹èš±å¯ã¯ãã«ã¡ã©ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¢ããªã±ãŒã·ã§ã³ïŒã«ã¡ã©ã¢ããªã±ãŒã·ã§ã³èªäœããããªé話ã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµçŸå®ãªã©ïŒã«ã®ã¿å¿ èŠã§ãã ããã©ããããæ®éã®ã¡ãã»ã³ãžã£ãŒã¯ ãåçãéä¿¡ã§ããããã«ãã«ã¡ã©ã«ã¢ã¯ã»ã¹ããå¿ èŠã¯ãããŸãã ã 倧éè¡ã®ã¢ããªã±ãŒã·ã§ã³ãžã®åŒã³åºãã«ã¢ã¯ã»ã¹ããå¿ èŠããªãã®ãšåãã§ãã
ããŒã ç»é¢ïŒã©ã³ãã£ãŒãã©ã³ãã£ãŒïŒãªã©ã®ãã·ã¹ãã ã®äžéšãã§ããããã®ããžãã¯ã«åŸããŸãã ã©ã³ãã£ãŒã¯ããã®ã¢ã¯ãã£ããã£ïŒ excludeFromRecents
ãlaunchMode="singleTask"
ãªã©ã®ç¹å¥ãªãã©ã°ã䜿çšããïŒãåããç¹å¥ãªã¢ããªã±ãŒã·ã§ã³ã§ãã
ããŒã ãã¿ã³ãæŒããšã HOME
ã«ããŽãªã®ã€ã³ãã³ããäœæãããã€ã³ãã³ããåŠçããããã®éåžžã®ã¡ã«ããºã ãå®è¡ãããŸããã·ã¹ãã ã«è€æ°ã®ã©ã³ãã£ãŒãã€ã³ã¹ããŒã«ãããããã©ã«ãã®ã©ã³ãã£ãŒãšããŠäœãéžæãããŠããªãå Žåãã·ã¹ãã ã¯éžæãã€ã¢ãã°ã衚瀺ããŸãã
ã©ã³ãã£ãŒããã®ã¢ããªã±ãŒã·ã§ã³ã®ãèµ·åããæå³ã«ãã£ãŠè¡ãããŸãã ã©ã³ãã£ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ã¢ã¯ãã£ããã£ãèµ·åããããšã§ãåŠçããããLAUNCHER
ã«ããŽãªã®æ瀺çãªã€ã³ãã³ããäœæããŸãã
ã¢ããªã±ãŒã·ã§ã³ã«ã¯ããã®ãããªæå³ããµããŒãããããã€ãã®ã¢ã¯ãã£ããã£ããããã©ã³ãã£ãŒã«è€æ°å衚瀺ãããå ŽåããããŸãïŒãã®å Žåã taskAffinity
ç°ãªãtaskAffinity
ãæå®ããå¿
èŠããããŸãïŒã ãŸãã¯ã1ã€ã¯ãªããã©ã³ãã£ãŒã«ã¯ãŸã£ãã衚瀺ãããŸããïŒãã ããèšå®ã®ã€ã³ã¹ããŒã«æžã¿ã¢ããªã±ãŒã·ã§ã³ã®å®å
šãªãªã¹ãã«ã¯è¡šç€ºãããŸãïŒã ãéåžžã®ãã¢ããªã±ãŒã·ã§ã³ããããè¡ãããšã¯ã»ãšãã©ãããŸããã ãã®åäœã®æãæåãªäŸã¯ãGoogle Play Servicesã§ãã
å€ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã èªäœãšããã®äžã«ã€ã³ã¹ããŒã«ãããŠããã¢ããªã±ãŒã·ã§ã³ã«åãããŠããŸãããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ããäºãã«ã€ããŠäœãç¥ããã察話ããæ¹æ³ãç¥ããŸããã Androidã³ã³ããŒãã³ããšintent'ovã®ã·ã¹ãã ã«ãããã¢ããªã±ãŒã·ã§ã³ã¯ã ãŸã ãäºãã«ã€ããŠäœãç¥ããã«ããŠãŒã¶ãŒã®ããã«1ã€ã®çµ±åã·ã¹ãã ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæ§æã§ããŸããã€ã³ã¹ããŒã«ãããã¢ããªã±ãŒã·ã§ã³ã¯ã 1ã€ã®å€§ããªã·ã¹ãã ã®äžéšãå®è£ ããã·ã¹ãã ãæ§æããŸãã ãããŠãããã¯äžæ¹ã§ã¯ãŠãŒã¶ãŒã«ãšã£ãŠééçã§ãããä»æ¹ã§ã¯ã«ã¹ã¿ãã€ãºã®ç¡éã®å¯èœæ§ãæ瀺ããŸãã
ç§ã®æèŠã§ã¯ãããã¯éåžžã«çŸããã§ãã
ã¿ã¹ã¯ãšããã¯ã¹ã¿ãã¯
æ¢ã«è¿°ã¹ãããã«ããã©ãŠã¶ã§ã¯ããŠãŒã¶ãŒã¯ãµã€ãéã§ã¯ãªãã¿ãéãåãæ¿ããããšãã§ããŸããåã¿ãã®å±¥æŽã«ã¯ãç°ãªããµã€ãã®å€ãã®ããŒãžãå«ããããšãã§ããŸãã åæ§ã«ãAndroidã§ã¯ããŠãŒã¶ãŒã¯ã¿ã¹ã¯ ïŒã¿ã¹ã¯ïŒãåãæ¿ããããšãã§ããŸã ã ã¿ã¹ã¯ã¯ã æè¿ã®ç»é¢ã«ã«ãŒãã®åœ¢ã§è¡šç€ºãããŸã ã åã¿ã¹ã¯ã¯ããã¯ã¹ã¿ãã¯ã§ã-ããã€ãã®ã¢ã¯ãã£ããã£ãäºãã«ãéãåãããããŸãã
ããã¢ã¯ãã£ããã£ãå¥ã®ã¢ã¯ãã£ããã£ãèµ·åãããšãæ°ããã¢ã¯ãã£ããã£ãå€ãã¢ã¯ãã£ããã£ã®äžã«ããã¹ã¿ãã¯ã«ããã·ã¥ãããŸãã ã¹ã¿ãã¯ã®äžçªäžã®ã¢ã¯ãã£ããã£ãå®äºãããšïŒããšãã°ããŠãŒã¶ãŒãã·ã¹ãã ã®æ»ããã¿ã³ãæŒããšïŒãã¹ã¿ãã¯ã®åã®ã¢ã¯ãã£ããã£ãåã³ç»é¢ã«è¡šç€ºãããŸãã
åã¹ã¿ãã¯ã«ã¯ç°ãªãã¢ããªã±ãŒã·ã§ã³ã®ã¢ã¯ãã£ããã£ãå«ããããšãã§ãã1ã€ã®ã¢ã¯ãã£ããã£ã®è€æ°ã®ã³ããŒãç°ãªãã¿ã¹ã¯ã®äžéšãšããŠããŸãã¯åãã¹ã¿ãã¯å ã§åæã«éãããšãã§ããŸãã
æ°ããã¢ã¯ãã£ããã£ãéå§ãããšãããã®ã¡ã«ããºã ãå€æŽããsingleTop
ã singleTask
ã singleInstance
ã CLEAR_TOP
ãªã©ã®ç¹å¥ãªãã©ã°ãæå®ã§ããŸãã ããšãã°ããã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ã¯éåžžãã¡ã€ã³ã¢ã¯ãã£ããã£ã®ã³ããŒã1ã€ã ãèµ·åã§ããéããŠããããŒãžãåãæ¿ããããã«ãç¬èªã®ã¿ãã·ã¹ãã ãå®è£
ããŸãã äžæ¹ã ã«ã¹ã¿ã ã¿ãã¯ãã©ãŠã¶ãŒïŒã»ãšãã©ã®å ŽåChromeïŒã§ã®ã¢ã¯ãã£ããã£ã®äŸã§ãããã»ãŒãéåžžã©ãããã«åäœããŸããã€ãŸãã1ããŒãžã®ã¿ã衚瀺ããŸããããã®ã³ããŒã®ããã€ããåæã«éãããšãã§ããŸãã
ã¢ããªã®ã©ã€ããµã€ã¯ã«
çµã¿èŸŒã¿ããã³ã¢ãã€ã«ããã€ã¹ã®äž»ãªå¶éã®1ã€ã¯ãå°éã®ã©ã³ãã ã¢ã¯ã»ã¹ã¡ã¢ãªïŒRAMïŒã§ãã ææ°ã®ãã©ãã°ã·ããããã€ã¹ã«ãã§ã«æ°ã®ã¬ãã€ãã®RAMãæèŒãããŠããå Žåã2008幎9æã«ãªãªãŒã¹ãããæåã®Androidã¹ããŒããã©ã³ã§ããHTC DreamïŒå¥åT-Mobile G1ïŒã§ã¯ãããã192ã¡ã¬ãã€ãã§ããã
ãéåžžã®ãã³ã³ãã¥ãŒã¿ãŒãšã¯ç°ãªããã¢ãã€ã«ããã€ã¹ã§ã¯ã¹ã¯ããããŒãã£ã·ã§ã³ïŒããã³ã¹ã¯ãããã¡ã€ã«ïŒã䜿çšãããªããšããäºå®ã«ãããã¡ã¢ãªå¶éã®åé¡ã¯ããã«è€éã«ãªããŸã-SSDããã³HDDãšæ¯èŒããŠã¢ã¯ã»ã¹é床ãé ããããªã©SDã«ãŒããšå èµãã©ãã·ã¥ã¡ã¢ãªã«ä¿åããŸãã KitKatã®ããŒãžã§ã³4.4以éãAndroid 㯠zRAMã¹ã¯ããã䜿çšããŸããã€ãŸããã¡ã¢ãªã®äœ¿çšé »åºŠã®äœãéšåãå¹æçã«å§çž®ããŸãã ãã ããã¡ã¢ãªã®å¶éã®åé¡ã¯æ®ããŸãã
ãã¹ãŠã®ããã»ã¹ãã·ã¹ãã ã®ãã©ãã¯ããã¯ã¹ã§ããå Žåã空ãã¡ã¢ãªãäžè¶³ããå Žåã®æåã®æŠç¥ã¯ãäžéšã®ããã»ã¹ã匷å¶çã«çµäºïŒã匷å¶çµäºãïŒããããšã§ãããããLinux Out Of MemoryïŒOOMïŒKillerã®æ©èœã§ãã ããããAndroidã¯ã·ã¹ãã ã§äœãèµ·ãã£ãŠããããç¥ã£ãŠãããã©ã®ã¢ããªã±ãŒã·ã§ã³ãšãã®ã³ã³ããŒãã³ããå®è¡ãããŠããããç¥ã£ãŠããããããããã¹ããŒããªãã¡ã¢ãªè§£æŸã¹ããŒã ãå¯èœã«ãªããŸãã
ãŸãã空ãã¡ã¢ãªããªããªããšãAndroidã¯onTrimMemory
/ onLowMemory
åŒã³åºããŠãäžèŠãªã¡ã¢ãªã解æŸããïŒããšãã°ããã£ãã·ã¥ãonTrimMemory
ïŒããã«ã¢ããªã±ãŒã·ã§ã³ã«æ瀺çã«èŠæ±ããŸãã 第äºã«ãAndroidã¯ããã¯ã°ã©ãŠã³ãã¢ããªã±ãŒã·ã§ã³ã§ã¬ããŒãžãå¹ççã«åéããçŸåšäœ¿çšããŠããã¢ããªã±ãŒã·ã§ã³ã®é床ãèœãšãããšãªããïŒJavaã¬ãã«ã§ïŒäœ¿çšããªããªã£ãã¡ã¢ãªã解æŸããŸãã
ããããAndroidã§ã¡ã¢ãªã解æŸããäž»ãªã¡ã«ããºã ã¯ã 䜿çšé »åºŠã®äœãã¢ããªã±ãŒã·ã§ã³ã®çµäºã§ã ã ã·ã¹ãã ã¯ããŠãŒã¶ãŒã«ãšã£ãŠæãéèŠã§ãªãã¢ããªã±ãŒã·ã§ã³ïŒããšãã°ããŠãŒã¶ãŒãé·ãæ®ã£ãŠããã¢ããªã±ãŒã·ã§ã³ïŒãèªåçã«éžæãã onDestroy
ãªã©ã®ã¡ãœãããåŒã³åºãããšã§ã³ã³ããŒãã³ãã«ãªãœãŒã¹ãããã«è§£æŸããæ©äŒãäžããããããçµäºãã䜿çšããã¡ã¢ãªãšãªãœãŒã¹ãå®å
šã«è§£æŸããŸãã
ãŠãŒã¶ãŒãã¡ã¢ãªäžè¶³ã®ããã«ã·ã¹ãã ã«ãã£ãŠçµäºããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã¯ãã£ããã£ã«æ»ããšããã®ã¢ã¯ãã£ããã£ãåã³éå§ãããŸãã ãã®å Žåãã¢ã¯ãã£ããã£ã¯å®äºæã«ãã®ç¶æ
ãä¿æãïŒ onSaveInstanceState
ïŒã次åã®èµ·åæã«åŸ©å
ããããããŠãŒã¶ãŒã«å¯ŸããŠééçã«åèµ·åãçºçããŸãã Androidãã¬ãŒã ã¯ãŒã¯ã«å®è£
ããããŠã£ãžã§ããã¯ããã®ã¡ã«ããºã ã䜿çšããŠãåèµ·åæã«ã€ã³ã¿ãŒãã§ã€ã¹ïŒUIïŒã®ç¶æ
ãèªåçã«ä¿åããŸãïŒEditTextã«å
¥åãããããã¹ããã«ãŒãœã«äœçœ®ãã¹ã¯ããŒã«äœçœ®ãªã©ïŒã ã¢ããªã±ãŒã·ã§ã³éçºè
ã¯ããã®ã¢ããªã±ãŒã·ã§ã³åºæã®ä»ã®ããŒã¿ã®ä¿åãšåŸ©å
ãããã«å®è£
ã§ããŸãã
Androidã¯ã¢ããªã±ãŒã·ã§ã³ãå®å šã«åèµ·åããããšã¯ã§ããŸãããã ã³ã³ããŒãã³ãããšã«æªäœ¿çšéšåãå®å šã«åèµ·åã§ããããšã匷調ããŸããããšãã°ã1ã€ã®ã¢ã¯ãã£ããã£ã®2ã€ã®ã³ããŒããã1ã€ãåèµ·åãããã1ã€ãå®äºãããŸãŸã«ããããšãã§ããŸãã
ãŠãŒã¶ãŒã®èŠ³ç¹ããèŠããšããã®ã¡ã«ããºã ã¯ã¹ã¯ããã®äœ¿çšã«äŒŒãŠããŸãïŒã©ã¡ãã®å Žåããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã³ããŒããããéšåã«æ»ããšãåã³ããŒãããããŸã§å°ãåŸ ã€å¿ èŠããããŸã-ããå Žåã«ã¯ãã£ã¹ã¯ãããå¥ã®å Žåã«ã¯-ä¿åãããç¶æ ã«ãã£ãŠåäœæãããŸã
èªåçã«åèµ·åããŠç¶æ ã埩å ãããã®ã¡ã«ããºã ã«ããããŠãŒã¶ãŒã¯ã¢ããªã±ãŒã·ã§ã³ããåžžã«å®è¡ãããŠããããšæããã¢ããªã±ãŒã·ã§ã³ãæ瀺çã«èµ·åããã³çµäºããå ¥åãããããŒã¿ãä¿åããå¿ èŠããªããªããŸãã
ãµãŒãã¹
ã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ã¯ãã£ããã£ã«çŽæ¥é¢ä¿ããªãã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠãããå ŽåããããŸããããã«ã¯ããã®ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ã¢ã¯ãã£ããã£ãå®äºãããšãã«ããã¯ã°ã©ãŠã³ãã§å®è¡ãç¶ããããšãå«ãŸããŸãã ããšãã°ãã¢ããªã±ãŒã·ã§ã³ã¯ããããã¯ãŒã¯ãã倧ããªãã¡ã€ã«ãããŠã³ããŒãããããåçãåŠçããããé³æ¥œãåçããããããŒã¿ãåæãããããµãŒããŒãžã®TCPæ¥ç¶ãç¶æããŠéç¥ãåä¿¡ãããã§ããŸãã
ãã®ãããªæ©èœã¯ãåå¥ã®ã¹ã¬ãããèµ·åããã ãã§ã¯å®è£ ã§ããŸãããããã¯ã·ã¹ãã ã®ãã©ãã¯ããã¯ã¹ã«ãªããŸãã ç¹ã«ããã®ãããªããã¯ã°ã©ãŠã³ãæäœã®ç¶æ ã«é¢ä¿ãªããããã»ã¹ã¯ãã¹ãŠã®ã¢ã¯ãã£ããã£ã®å®äºæã«å®äºããŸãã 代ããã«ãAndroidã¯å¥ã®çš®é¡ã®ã³ã³ããŒãã³ã- ãµãŒãã¹ã䜿çšããããšããå§ãããŸã ã
ã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³äžã«ãã®ã¢ããªã±ãŒã·ã§ã³ã®ã¢ã¯ãã£ããã£ã®äžéšã§ã¯ãªãã¢ã¯ã·ã§ã³ãå®è¡ãããŠããããšãã·ã¹ãã ã«éç¥ããããã«å¿ èŠã§ãã ãµãŒãã¹èªäœã¯ãå¥åã®ã¹ã¬ãããŸãã¯ããã»ã¹ãäœæããããšãæå³ãããã®ã§ã¯ãããŸããããã®ãšã³ããªãã€ã³ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ã¹ã¬ããã§èµ·åãããŸãã éåžžããµãŒãã¹å®è£ ã¯è¿œå ã®ã¹ã¬ãããèµ·åããããããç¬ç«ããŠç®¡çããŸãã
ãµãŒãã¹ã¯å€ãã®ç¹ã§ã¢ã¯ãã£ããã£ãšéåžžã«ãã䌌ãŠããŸãããµãŒãã¹ã¯ã€ã³ãã³ãã䜿çšããŠèµ·åãããã¡ã¢ãªäžè¶³ã§ã·ã¹ãã ã«ãã£ãŠçµäºãããå¯èœæ§ããããŸãã
å®è¡äžã®ãµãŒãã¹ã«ã¯ã次ã®3ã€ã®ç¶æ ããããŸãã
- ãã©ã¢ã°ã©ãŠã³ããµãŒãã¹-ãã¡ã€ã«ã®ããŠã³ããŒããé³æ¥œã®åçãªã©ããŠãŒã¶ãŒã«ãšã£ãŠã¹ããŒã¿ã¹ãéèŠãªã¢ã¯ã·ã§ã³ãå®è¡ãããµãŒãã¹ã ãã®ãããªãµãŒãã¹ã¯ãã·ã¹ãã éç¥ã«ãŒãã³ã«éç¥ã衚瀺ããããã«å¿ èŠã§ãïŒäŸïŒããŠã³ããŒãã¹ããŒã¿ã¹ãçŸåšã®æ²ã®ååãåçã³ã³ãããŒã«ïŒã ã·ã¹ãã ã¯ããã®ãããªãµãŒãã¹ããŠãŒã¶ãŒã«ãšã£ãŠçŸåšã®ã¢ã¯ãã£ããã£ãšã»ãŒåããããéèŠã§ãããšèŠãªããæåŸã®æ段ãšããŠã®ã¿ãããå®äºããŸãã
ããã¯ã°ã©ãŠã³ããµãŒãã¹-ç¶æ ããŠãŒã¶ãŒã«é¢ä¿ã®ãªãããã¯ã°ã©ãŠã³ãã¢ã¯ã·ã§ã³ïŒã»ãšãã©ã®å ŽåãåæïŒãå®è¡ãããµãŒãã¹ã ãã®ãããªãµãŒãã¹ã¯ãã¯ããã«é«ã確çã§ã¡ã¢ãªäžè¶³ã§çµäºã§ããŸãã å€ãããŒãžã§ã³ã®Androidã§ã¯ãåæã«å®è¡ãããå€æ°ã®ããã¯ã°ã©ãŠã³ããµãŒãã¹ãããã¬ãŒããã®åå ã«ãªãããšããããããŸããã Oreoã®ããŒãžã§ã³8.0以éã§ã¯ãAndroidã¯ããã¯ã°ã©ãŠã³ããµãŒãã¹ã®äœ¿çšãå³ããå¶éã ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãçµäºããŠããæ°ååŸã«åŒ·å¶çã«çµäºããŸãã
ãã€ã³ãããããµãŒãã¹-çä¿¡ãã€ã³ããŒæ¥ç¶ãåŠçãããµãŒãã¹ã ãã®ãããªãµãŒãã¹ã¯ãä»ã®ã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ã«äœããã®æ©èœãæäŸããŸãïŒ
WallpaperService
ãGoogle Play Servicesãªã©ïŒã ãã®å Žåãã·ã¹ãã ã¯ã¯ã©ã€ã¢ã³ããæ¥ç¶ãããšèªåçã«ãµãŒãã¹ãéå§ããåæããããšãã«ãµãŒãã¹ãåæ¢ã§ããŸãã
ããã¯ã°ã©ãŠã³ãã¢ã¯ã·ã§ã³ãå®è¡ããæšå¥šæ¹æ³ã¯ãã·ã¹ãã ããŒã¹ã®ããã¯ã°ã©ãŠã³ãã¹ã±ãžã¥ãŒãªã³ã°ã¡ã«ããºã ã§ããJobSchedulerã䜿çšããããšã§ãã JobSchedulerã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã¯æ¬¡ã®ãããªãµãŒãã¹ãéå§ããããã®åºæºãæå®ã§ããŸãã
- ãããã¯ãŒã¯ã®å¯çšæ§ ã ããã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãã®ãµãŒãã¹ããããã¯ãŒã¯æ¥ç¶ãå¿ èŠãšãããã©ããã瀺ãããšãã§ããŸããå¿ èŠãªå Žåã¯ãããŒãã³ã°ã§åäœããããåŸéå¶æ¥ç¶ã䜿çšããããæå®ã§ããŸãã
- é»æºã«æ¥ç¶ãããšã ãããããªãŒãçéžãããããšãªãããµãŒãã¹ãå®è¡ã§ããŸãã
- éã¢ã¯ãã£ã ïŒã¢ã€ãã«ïŒãããã€ã¹ã䜿çšããŠããªããšãã«ãã¢ã¯ãã£ããªäœ¿çšäžã«é床ãèœãšãããšãªããµãŒãã¹ãå®è¡ã§ããŸãã
- ã³ã³ãã³ãã®æŽæ° -ããšãã°ãæ°ããåçã®å€èŠ³ã
- èµ·åã®æéãšæé -ããšãã°ããã£ãã·ã¥ã¯æ¯æ¥ã¯ãªã¢ã§ããã«ã¬ã³ããŒã€ãã³ãã¯1æéããšã«åæã§ããŸãã
JobSchedulerã¯ãæå®ãããåºæºã«åŸã£ãŠç»é²ããããµãŒãã¹ãå®è¡ããïŒãã€ã³ããŒãä»ããåŒã³åºããšããŠå®è£ ïŒäºå®ã§ãã JobSchedulerã¯ã·ã¹ãã å šäœã®ã¡ã«ããºã ã§ãããããã€ã³ã¹ããŒã«ãããŠãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®ç»é²ãµãŒãã¹ã®åºæºãèšç»ããéã«èæ ®ãããŸãã ããšãã°ã䜿çšäžã«ããã€ã¹ã«æ¥æ¿ãªè² è·ããããã®ãé²ãããã«ãåæã«ã§ã¯ãªãé çªã«ãµãŒãã¹ãéå§ããå®æçã«å°ããªã°ã«ãŒãïŒãããïŒã§è€æ°ã®ãµãŒãã¹ãå®è¡ããŠãç¡ç·æ©åšã®ç¶ç¶çãªãšãã«ã®ãŒæ¶è²»ã®ãªã³/ãªããé²ãããšãã§ããŸãã
ã芧ã®ãšãããJobSchedulerã䜿çšããŠããããã¯ã°ã©ãŠã³ããµãŒãã¹ã䜿çšãããªãã·ã§ã³ã®1ã€ã眮ãæããããšã¯ã§ããŸãããããã·ã¥éç¥ãåä¿¡ããããã«ãµãŒããŒãžã®TCPæ¥ç¶ãç¶æããŸãã Androidãã¢ããªã±ãŒã·ã§ã³ã«ãã®ãããªæ©äŒãæäŸããå Žåãããã€ã¹ã¯åžžã«å®è¡äžã®ãµãŒããŒã«æ¥ç¶ãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãç¶æããå¿ èŠããããããã¯ãã¡ããäžå¯èœã§ãã
ãã®åé¡ã®è§£æ±ºçã¯ãç¹å¥ãªããã·ã¥ãµãŒãã¹ã§ããæãæåãªãã®ã¯ãGoogleã®Firebase Cloud Messaging ïŒä»¥åã®Google Cloud MessagingïŒã§ãã
FCMã®ã¯ã©ã€ã¢ã³ãåŽã¯ãGoogle Play Servicesã¢ããªã±ãŒã·ã§ã³ã«å®è£ ãããŠããŸãã ããã¯ã°ã©ãŠã³ããµãŒãã¹ã®éåžžã®å¶éããæ確ã«é€å€ãããŠãããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãGoogleãµãŒããŒãšã®åäžã®æ¥ç¶ããµããŒãããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã«ããã·ã¥éç¥ãéä¿¡ããéçºè ã¯ãFCMãµãŒããŒããŒããä»ããŠãããéä¿¡ããŸãããã®åŸãPlay Servicesã¢ããªã±ãŒã·ã§ã³ã¯ã¡ãã»ãŒãžãåä¿¡ããç®çã®ã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ããŸãã
ãã®ãããªã¹ããŒã ã«ãããäžæ¹ã§ã¯ã次ã®åææéãåŸ ããã«ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«ããã·ã¥éç¥ãå³åº§ã«é ä¿¡ã§ããŸããäžæ¹ã§ãå€ãã®ã¢ããªã±ãŒã·ã§ã³ãåæã«å®è¡ãç¶ããããšã¯ã§ããŸããã
æŸéåä¿¡æ©ãšã³ã³ãã³ããããã€ããŒ
ã¢ã¯ãã£ããã£ãšãµãŒãã¹ã«å ããŠãAndroidã¢ããªã±ãŒã·ã§ã³ã«ã¯ãè°è«ã«ã¯ããŸãèå³ã®ãªã2ã€ã®ã¿ã€ãã®ã³ã³ããŒãã³ãããããŸãããããã¯ãããŒããã£ã¹ãã¬ã·ãŒããŒãšã³ã³ãã³ããããã€ããŒã§ãã
ãããŒããã£ã¹ãã¬ã·ãŒã㌠-ã¢ããªã±ãŒã·ã§ã³ããããŒããã£ã¹ããåä¿¡ã§ããããã«ããã³ã³ããŒãã³ããã·ã¹ãã ãŸãã¯ä»ã®ã¢ããªã±ãŒã·ã§ã³ããã®ç¹å¥ãªã¿ã€ãã®ã¡ãã»ãŒãžã æåã¯ãååã瀺ãããã«ããããŒããã£ã¹ãã¯äž»ã«ãã¹ãŠã®ãµãã¹ã¯ã©ã€ãæžã¿ã¢ããªã±ãŒã·ã§ã³ã«ãããŒããã£ã¹ãã¡ãã»ãŒãžãéä¿¡ããããã«äœ¿çšãããŸãããããšãã°ãé£è¡æ©ã¢ãŒãããªã³ãŸãã¯ãªãã«ãããšãã·ã¹ãã ã¯AIRPLANE_MODE_CHANGED
ã¡ãã»ãŒãžãéä¿¡ããŸãã
ããã§ãã¢ããªã±ãŒã·ã§ã³ã¯NEW_PICTURE
ãNEW_VIDEO
ãªã©ã®ãããŒããã£ã¹ãããµãã¹ã¯ã©ã€ããã代ããã«ãJobSchedulerã䜿çšããå¿
èŠããããŸãã ãããŒããã£ã¹ãã¯ããããŸããªã€ãã³ãïŒ BOOT_COMPLETED
ãªã©ïŒã«äœ¿çšãããããæ瀺çãªã€ã³ãã³ãã䜿çšããŠãã€ãŸããããã¢ããªã±ãŒã·ã§ã³ããå¥ã®ã¢ããªã±ãŒã·ã§ã³ãžã®ã¡ãã»ãŒãžãšããŠæ£ç¢ºã«äœ¿çšãããŸãã
ã³ã³ãã³ããããã€ããŒã¯ãã¢ããªã±ãŒã·ã§ã³ã管çããããŒã¿ãžã®ã¢ã¯ã»ã¹ãä»ã®ã¢ããªã±ãŒã·ã§ã³ã«æäŸã§ããããã«ããã³ã³ããŒãã³ãã§ãã ãã®æ¹æ³ã§ã¢ã¯ã»ã¹ã§ããããŒã¿ã®äŸã¯ããŠãŒã¶ãŒã®é£çµ¡å ãªã¹ãã§ãã
, , (SQLite) . content provider â , .
content provider' REST API. - URI (, content://com.example.Dictionary.provider/words/42
) ContentResolver. - , , UriMatcher
, (query, insert, update, delete).
content provider' Storage Access Framework , , (, Dropbox Google Photos) , .