ส่วนประกอบหลักของแอพลิเคชั่นบน Android – เจตนาและกิจกรรม

เรื่องนึงที่ผมพบว่ามีคนจำนวนหนึ่งสับสนระหว่างการศึกษาการพัฒนาโปรแกรมบน Android นั่นคือ Intent และ Activity พอดีผมมีพูดถึงไปในคอมเมนท์ของข่าวหนึ่งบน Blognone ก็เลยคิดว่าน่าจะเอามาขยายความในบล็อกตัวเองเสียหน่อยดีกว่า

สำหรับแอพลิเคชั่นบน Android นั่นจะประกอบไปด้วยส่วนย่อย ๆ ที่เรียกว่า Activity ที่แปลตรงตัวได้ว่า “กิจกรรม” นั่นเอง Activity  นั้นก็แทนสิ่งที่ User  สามารถกระทำได้กับโปรแกรมได้ เช่น การแสดงข้อความสั้น (SMS) ใน Messaging  หรือ การแสดงภาพใน Gallery เป็นต้น

 Activity นั้นเป็นสิ่งที่จับต้องได้ในมุมมองของผู้ใช้ แต่สำหรับการที่จะเรียกใช้ Activity นั้นโปรแกรมเมอร์จะต้องสร้างตัวแปรประเภท  Intent ขึ้นมาตัวหนึ่ง

ทีนี้ Intent คืออะไร ? Intent นั้นแทนเจตนาของผู้ใช้ เขาอาจจะอยากโทรออก ต้องการจะดูรูป ต้องการจะฟังเพลง อยากดูข้อความสั้นที่มีคนส่งเข้ามาเป็นต้น แต่ถ้าจะบอกว่าให้โปรแกรมเราอ่านความต้องการของผู้ใช้ด้วยตัวเองคงดูเหนือธรรมชาติไปสักนิด แน่นอนครับ Intent นั้นจะถูกสร้างเพื่อตอบสนองการกระทำของผู้ใช้ เช่น เมื่อเขากดปุ่ม Share  บน Action bar ก็แสดงว่าเขาต้องการที่จะแชร์ข้อมูลบางอย่าง เราก็ไปสร้าง Intent ว่าผู้ใช้ต้องการจะแชร์ข้อมูล

ความพิเศษของ Android หนึ่งอย่างคือ ระบบอาจจะมี Activity มากกว่า 1 อย่างขึ้นมารองรับเจตนาของผู้ใช้ และผู้ใช้สามารถติดตั้งเพิ่มได้เองอีกด้วย (เพราะอย่าลืมว่ามันก็เป็นส่วนหนึ่งของแอพลิเคชั่นที่ผู้ใช้ติดตั้งนั่นเอง) อย่างเช่น เมื่อผู้ใช้กดลิงค์บนหน้า About ของแอพลิเคชั่นผม โดยที่เครื่องเขามีทั้ง Firefox และ Chrome ติดตั้งอยู่ ตัวระบบจะแสดงหน้าต่างให้ผู้ใช้เลือกได้ว่าจะเปิด  Browser ตัวไหน ยิ่งกว่านั้นผู้ใช้ยังสามารถเลือกได้ว่าจะใช้ตัวไหนเป็นหลักเพื่อที่จะไม่ต้องแสดงหน้าต่างให้เลือกอีก

นอกจากนี้ เรายังสามารถระบุให้ Intent นั้นใช้งาน Activity ไหนเป็นพิเศษ โดยการส่งค่า class ของ Activity ลงไปนั่นเอง ดังนั้นถ้าเป็น Intent ที่ค่อนข้างเฉพาะสำหรับ Application ของเราก็ใช้การระบุ Activity ลงไปใน Intent ไปเลย แต่ถ้าเป็น Intent กลาง ๆ นั้นเราก็แค่ระบุประเภทก็พอแล้วให้ผู้ใช้เลือกว่าจะใช้ตัวไหน การทำแบบนี้จะดูเป็นธรรมชาติมากกว่าครับ

ก็หวังว่าจะเป็นประโยชน์ต่อ Android Dev มือใหม่บ้างนะครับ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.