
ãã®èšäºã§ã¯ãAndroidã¢ããªãæ§æããã³ã³ããŒãã³ããšããã®ã¢ãŒããã¯ãã£ã®èåŸã«ããã¢ã€ãã¢ã«ã€ããŠèª¬æããŸãã
ã·ãªãŒãºèšäºïŒ
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
ã
ã€ã³ãã³ãã¯ã æç€ºç ïŒæç€ºçïŒããã³æé»ç ïŒæé»çïŒã«ããããšãã§ããŸãã æç€ºçãªã€ã³ãã³ãã¯ãèµ·åããå¿
èŠãããç¹å®ã®ã³ã³ããŒãã³ãã®èå¥åã瀺ããŸã-ã»ãšãã©ã®å Žåãåãã¢ããªã±ãŒã·ã§ã³å
ã®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ã¯ã·ã¹ãã å
šäœã®ã¡ã«ããºã ã§ãããããã€ã³ã¹ããŒã«ãããŠãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®ç»é²ãµãŒãã¹ã®åºæºãèšç»ããéã«èæ
®ãããŸãã ããšãã°ã䜿çšäžã«ããã€ã¹ã«æ¥æ¿ãªè² è·ããããã®ãé²ãããã«ãåæã«ã§ã¯ãªãé çªã«ãµãŒãã¹ãéå§ãã宿çã«å°ããªã°ã«ãŒãïŒãããïŒã§è€æ°ã®ãµãŒãã¹ãå®è¡ããŠãç¡ç·æ©åšã®ç¶ç¶çãªãšãã«ã®ãŒæ¶è²»ã®ãªã³/ãªããé²ãããšãã§ããŸãã
TCPæ¥ç¶ã«ã€ããŠã芧ã®ãšããã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) , .
Android, , , , root-.