Saturday, October 5, 2013

Android Dev. For Dummy II: Activity

Kenapa activity ini dinamakan activity?. Dan apakah yang dimaksud activity ini sama dengan kata aktivitas pada bahasa kita?. Apa yang kita pahami dari sebuah kata aktivitas, definisi yang sama juga istilah activity pada pemrograman android. Aktivitas adalah kerja, atau salah satu kegiatan kerja yang dilaksanakan dalam tiap bagian dalam perusahaan. Ini merupakan definisi umum yang saya ambil dari situs artikata.com.



Sedangkan definisi activity pada dokumentasinya adalah "An activity is a single, focused thing that the user can do". Fokus pada apa yang dilakukan user/kerja user. Apa dikatakan sama tapi dengan bahasa yang berbeda, menurutku sih :P_. Banyak dari temen2 developer yang baru belajar, masih mengalami kesulitan memahami ini. Yah itu mungkin karena mereka langsung menulis kode-kode contoh program tanpa membaca dokumentasi untuk memahami apa yang sebenarnya mereka tulis. Disini mungkin akan saya tulis beberapa penjabaran (bukan contoh atau tutorial) mengenai sebuah activity pada pemrograman android.

Ketika kita melakukan sebuah aktivitas, maka minimal akan ada hal berikut ini:
1. Kapan atau ketika ada aksi apa, aktivitas mulai dilakukan (action).
2. Bagaimana cara kita memanggil aktifitas (intent).
3. Bagaimana aktivitas dilakukan (lifecycle activity).

Activity pada android dibentuk dengan menjawab minim ketiga pertanyaan diatas. Itu artinya kita harus mendefinisikan ketiga atribut ini ketika membuat sebuah activity. Apa yang saya tulis disini akan saya batasi untuk ketiga hal ini saja. Sebenarnya ada beberapa bahasan lagi tentang activity, tapi dilain kesempatan saja mungkin akan saya tulis :))_.

1. Action

Action pada activity lebih menjawab pertanyaan, aksi apa sebuah activity dilakukan. Yah kalo kita bermaksud melakukan sebuah aktifitas, pastinya ada sesuatu hal sehingga kita melakukan itu bukan!!. Nah action disini sama seperti itu :D_. Sebuah activity dipanggil bisa darimana saja bukan!! karena hal inilah tujuan digunakan action. Kita mendefinisikan action-action apa saja yang dapat di handle oleh activity yang kita buat.

Untuk mendefinisikan action, kita melakukannya dibagian intent, melalui method setAction dan getAction. Kita bebas memberikan nilai apa saja, tapi tentu saja ada beberapa dan mungkin banyak (saya belum tahu keseluruhan) dari action-action dari seluruh activity (yang sudah ada pada) sistem android. Contoh action-action android yang biasa kita pake:


Contoh kalo kita mau menelepon seseorang maka yang akan kita buat adalah,

public static final String ACTION_CALL = "android.intent.action.CALL";
Intent phoneIntent = new Intent();
phoneIntent.setAction(ACTION_CALL);


contoh lain lagi kalau kita mau memanggil semua activity yang meng-"handle" kirim message email,

public static final String ACTION_SEND = "android.intent.action.SEND";
Intent emailIntent = new Intent();
emailIntent.setAction(ACTION_SEND);
emailIntent.putExtra("android.intent.extra.EMAIL", new String[] { emailAddress });

Ada yang beda disini, action ACTION_SEND bukanlah action spesifik untuk memanggil activity kirim email. Dia sebenarnya general action untuk activity-activity untuk mengirim pesan keluar tidak hanya email, maka dari itu kita memberikan informasi yang memberikan detail mengenai intent yang kita buat, dengan kita memberikan sebuah extras.

Membuat sebuah action mudah dilakukan, cek link berikut ini untuk dokumentasi pemberian nama dari action yang kita buat.

For actions you define, it's best to use the package name as a prefix to ensure uniqueness. For example, a TRANSMOGRIFY action might be specified as follows:
<action android:name="com.example.project.TRANSMOGRIFY" />

2. Intent

Di artikel sebelumnya saya sudah nulis beberapa hal mengenai intent. Saya menulis beberapa hal yang harus kita pahami dari intent android. Yang mau saya tambahkan disini mengenai intent-filter. Biasa kita temukan di file manifest, bukan!!. #eh iyah tapi sebelumnya ada beberapa atribut selain action pada intent. Atribut intent itu seperti data, extras, category dan flag. Data disini merupakan data yang kita berikan pada intent, contohnya kalau intent ACTION_EDIT maka kita memberikan data dokumen apa yang akan kita edit, atau intent ACTION_CALL maka data yang harus kita berikan tentunya nomer telpon. Extras merupakan key-value sebagai additional information intent, sedangkan category berisi informasi mengenai komponen (activity) seperti apa yang akan meng-handle intent ini. Ada beberapa category disini, diantaranya adalah,



sumber: http://developer.android.com/guide/components/intents-filters.html

intent-filter. apa tujuan kita mendefinisikan intent-filter pada activity?? Kita mendefinisikan intent-filter disini untuk memberitahu sistem android bahwa action-action apa saja yang dapat di-handle oleh activity ini. Tujuannya sih juga agar aplikasi lain dapat memanfaatkan activity yang kita bikin. Yah dengan membuat intent dan spesifik action yang kita bikin, aplikasi lain dapat menggunakannya. Ehhmmm bukan itu aja sih tujuannya. Banyak action pada sistem android, dan itu terbagi menjadi beberapa category seperti yang saya tulis diatas. satu action yang harus ada pada aplikasi adalah ACTION_MAIN dengan category-nya LAUNCHER. Action ini adalah saat pengguna android, menekan icon aplikasi pada halaman menu. Action ini harus ada karena memang semua aplikasi yang kita bikin, pastinya akan ada pada halaman menu, right!!!.

<activity android:name="com.uin.messager.ui.ContactList">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
     <intent-filter>
      <action android:name="android.intent.action.CREATE_SHORTCUT" />
      <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
...
</activity>

3. Lifecycle activity

Semua yang hidup pasti punya lifecycle!!! ya iyalah namanya aja life+cycle :D_. Activity disini juga punya lifecycle. kalo yang ini tidak ada cara lain, kita harus membaca "buku manual" untuk memahaminya. Sama seperti kita, manusia, kita diberi "buku manual" yang senantiasa kita baca untuk hidup karena memang itu dari pencipta kita.
Yang harus kita ketahui disini adalah kapan sistem android mengeksekusi activity dan apa yang dilakukan kemudian. lanjut lagi kapan sistem menghentikan aplikasi dan apa yang kemudian dilakukan activity. contoh lainnya, apa yang kemudian dilakukan activity ketika sistem android mengalami low memory. Pertanyaan disini lebih kepada apa yang dapat dilakukan activity ketika ada event pada sistem android. Yah semuanya itu dapat kita aksees dengan adanya lifecycle activity. Berikut lifecycle diagram untuk activity,



oke, manual dokumentasinya disini, silahkan membaca yak :))_.


public class ExampleActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // The activity is being created.
    }

    @Override
    protected void onStart() {
        super.onStart();
        // The activity is about to become visible.
    }

    @Override
    protected void onResume() {
        super.onResume();
        // The activity has become visible (it is now "resumed").
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Another activity is taking focus (this activity is about to be "paused").
    }

    @Override
    protected void onStop() {
        super.onStop();
        // The activity is no longer visible (it is now "stopped")
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // The activity is about to be destroyed.
    }
}


Activity pasti memiliki ketiga hal yang sudah saya tulis diatas. tapi ada satu lagi yang penting dari sebuah activity ini, yaitu View. View ini tidak dapat berdiri sendiri, dia masih memerlukan komponen (activity). Yah ini sama seperti wujud kongkretnya dari activity. Ada banyak macam class View yang dapat kita gunakan, dan insyaallah akan saya tulis di artikel berikutnya.

To be continued...

3 comments: