Monday, September 23, 2013

Android Dev. For Dummy I: Intent


Satu hal yang saya syukuri adalah saya "pembelajar" yang baik, yahh walaupun saya tidak dapat melakukan segala sesuatunya dengan baik tapi saya sangat baik ketika mempelajari sesuatu, terutama dalam bidang pekerjaan saya, computer programming. Hmmm bentar2, saya kok ingat pepatah "kurang tepat disebut sebagai pembelajar yang baik, karena hanya ada pembelajar yang sungguh-sungguh". Enngggg... yah udah lah saya dak mau mendebat pepatah ini, tapi memang saya termasuk orang yang sangat sungguh-sunggu belajar untuk dapat pemahaman. So what?? yaa ini hanya sekedar pembuka saja, kurang #greget kalo to the point, dan mungkin saja ada someone yang peduli tentang saya heuheuheu. 

Sebenarnya saya ingin nulis tentang pemahaman (hasil semedi) saya tentang android programming selama ini. Saya sebut "pemahaman", bukan "pengetahuan" karena memang untuk mendapat hasil yang baik kita harus "paham", bukan hanya sekedar "tahu" #supeerrr.  

Semua hal, apapun itu akan kelihatan rumit ketika baru pertama kali mempelajarinya, right?? istilah baru, teknologi baru, konsep pemrograman baru dan baru-baru lainnya. Tapi ada beberapa saran bagi para pembelajar nih, beberapa saran ini juga saya lakukan untuk belajar pemrograman komputer. Yang pertama, susun beberapa prioritas utama yang "harusnya" dipelajari pertama kali. belajar terus sampai paham dari tiga saja prioritas pertama tadi. Kedua, Carik dan pahami kenapa "sesuatu" itu dinamakan atau diistilahkan "A" atau "B", coz si pembuat "sesuatu" itu pastinya juga mikir gimana caranya ngasih tahu orang dengan hanya pakek "nama". Dan yang ketiga, buat penjelasan yang sangat2 sederhana dari kata2 yang sederhana dan dengan bahasa sendiri. yah ini untuk nyimpulkan aja apa kita benar2 paham atau tidak. kalo kita tidak dapat mengartikan secara sederhana, itu artinya kita menganut paham vickisme, dan itu dak baek untuk jiwa dan raga heuheuheu. Kok banyak banget yah pembukanya, padahal pengen nulis tentang android #hadee. Okelah kita masuk ke intinya kalo gitu.      

Tiga pokok bahasan jadi prioritas pertama untuk mempelajari pemrograman android, yaitu intent, activity dan view - ini menurutku sih, so kalo emang ada yang beda, yaah dak usahlah ngajak berantem :)_. Pun dengan memahami ketiga bahasan ini, kita masih belom bisa membuat aplikasi dengan hasil yang bagus, tapi aplikasi android apapun rasanya, apapun bentuknya pasti tidak akan melupakan ketiga bahasan ini. So, mari kita mulai:

Apa itu intent?

Pernah denger kata "the power of intention" atau mungkin sebuah quote "A good traveler has no fixed plans, and is not intent on arriving". Apa arti intent itu disini, dan apa yang dimaksud intent pada pemrograman android platform. Hal pertama yang biasa saya lakukan adalah mencari tahu istilah dari sisi bahasa/arti katanya.

Saya lebih suka mengartikan intent dalam pemrograman android ini sebagai "maksud" | "purpose". Maksud saya seperti "ini", saya ingin seperti "itu", yah hanya sebatas "maksud" dan "ingin". Contohnya seperti ini: "Saya memiliki vCard contact, dan saya ingin melihatnya", contoh lain "Saya ingin membuka dan melihat alamat URL ini", contoh lain lagi "Saya ingin melihat gambar ini, pada aplikasi Image Viewer ini". Sampai disini Intent ini tidak ada gunanya, dia "useless", yaaah sama seperti kita jika hanya ingin ini ingin itu banyak sekali, yaah pasti sulit untuk "move on"-nya heuheuheu. Makanya kemudian ada yang namanya "activity", untuk mewujudkan apa kita punya intent :)_. Nah kan dari sini udah kelihatan hubungannya.

Saya coba googling untuk mengetahui beberapa definisi intent dari beberapa temen2 developer dan saya pikir beberapa kurang tepat untuk menjelaskan apa itu intent. Contoh definisinya seperti ini : 

Kalau pendapat saya, intent itu adalah sebuah object yang merupkan Kunci  untuk berkomunikasi dengan activity lainnya.

Dan ada juga definisi menurut paham #vickisme

Intent adalah pesan asynchronous yang memungkinkan aplikasi untuk memberikan request secara fungsionalitas dari komponen yang berbeda di sitem android, misalnya Service, broadcast receiver atau Activity.

Dalam prakteknya sih, intent bisa digunakan melempar data dari satu activity ke activity lainnya. Sebenarnya sih intent bukan untuk "komunikasi", dia hanya sebatas menyatakan "maksud". Sama seperti #KatakanCinta -lah, kira-kira begitu :)).

Intent terbagi menjadi dua, implisit dan eksplisit. Dalam arti bahasa saja (tidak pake lihat dokumentasi), kita sudah mengetahui apa itu "maksud" yang implisit dan apa "maksud" eksplisit. Contohnya gini. intent pertama, "Saya ingin mengirimkan sebuah pesan ke si Eneng". Intent kedua "Saya ingin mengirimkan pesan lewat BBM ke si Eneng". Nah coba lihat kedua intent itu, apa perbedaannya?_. Perbedaannya ada pada "activity" apa pesan itu harus dilewatkan. Yang pertama tidak menyebutkan "activity" apa, sedangkan yang kedua menyebutkan "activity" apa yang dia maksud. Nah kelihatan kan apa yang harus saya buat dengan intent. Yang pertama disebut implisit intent dan kedua disebut eksplisit intent. Berikut penjelasan teknis yang saya copas saja dari dokumentasinya, pasang kacamata pengaman yah, coz kata2nya akan sedikit banyak menyilaukan :))

There are two primary forms of intents you will use: 
Explicit Intents have specified a component (via setComponent(ComponentName) or setClass(Context, Class)), which provides the exact class to be run. Often these will not include any other information, simply being a way for an application to launch various internal activities it has as the user interacts with the application. 
Implicit Intents have not specified a component; instead, they must include enough information for the system to determine which of the available components is best to run for that intent.

Berikut contoh kodingan implisit intent dan eksplisit intent.

// Implisit intent
String url = "http://www.goocode.blogspot.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));

// Eksplisit intent
Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "This value one for ActivityTwo ");
i.putExtra("Value2", "This value two ActivityTwo"); 

Yah kira-kira sama saja apa yang saya tulis dengan bahasa teknis dokumentasi kayak yang diatas :)_. Untuk pembahasan lebih lanjut mengenai intent ini, saya tambahi nanti dibagian Activity. Tapi udahan dulu yah hehehe. Udah telat nih, janjian mau ngopi dan nonton bareng #IndonesiaPastiMenanggg...

#to be continued...

4 comments:

  1. benar2 bagus mas tulisannya, keep share yah mas mus...

    ReplyDelete
  2. keren mas mskasih karena telah berbagi pengetahuanya...

    ReplyDelete
  3. Beautiful Blog Picture
    https://a-mz.blogspot.com

    ReplyDelete