Welcome to My Blog

Sunday, August 18, 2019

Memahami Tentang Activity pada Android Programming

Assalamualaikum sobat debugging....
Bismillah kali ini kita akan sedikit belajar dan memahami tentang Lifycycle Activity atau Siklus dari Activity di Android. Apa itu Activity? Bagaimana siklusnya? Dan Gimana cara kerjanya? Dan Gimana sih cara penggunaannya di Android Programming?
Oke kita akan membahasnya di kesempatan kali ini....



1. Apa itu Activity?

Tentunya itu adalah pertanyaan yang akan kita bahas pertama. Activity merupakan suatu siklus dimana dalam aplikasi Android itu berjalan untuk navigasi user. Dari namanya saja Activity, tentunya disini berisi aktifitas untuk aplikasi android terhadap user. Tanpa adanya Activity, maka proses-proses untuk user akan sulit atau bahkan tidak bisa memberikan action pada sebuah aplikasi Android. Apalagi dalam aplikasi android itu wajib hukumnya menambahkan sebuah Activity untuk dijadikan patokan awal saat aplikasi itu berjalan, atau bisa dibilang saat aplikasi pertama dibuka. Bisa dibilang, Activity ini adalah sebuah wadah untuk tampilan-tampilan (layouts/views) yang nantinya akan dilihat dan diproses oleh user.

2. Gimana sih cara kerja Activity?

Mungkin gambar berikut bisa sangat menggambarkan siklus dari Activity. (Sumber : Developer Android)
Sedikit penjelasan gambar diatas jika kita praktekan di Android (contoh project tentang activity bisa kalian download di sini):
  1. Saat Activity pertama di buka, maka akan selalu memanggil onCreate() terlebih dahulu. Proses ini akan selalu terpanggil saat Activity dibuka pertama kali dan status Activity sudah dinyatakan finished. Lalu setelah proses onCreate() selesai, maka onStart() akan terpanggil dan berakhir di onResume(). Nah, dari sini user bisa bebas mengklik tombol, atau melihat-lihat isi tampilan yang disediakan di dalam Activity tersebut. onCreate() > onStart() >onResume()
  2. Setelah Activity sudah running atau dijalankan, coba tekan tombol kembali atau backpress dari aplikasi yang anda buat, maka pasti akan terpanggil onPause() terlebih dahulu, lalu onStop(), baru kemudian onDestroy() sebagai akhir hidup dari Activity.
  3. Ketika berpindah dari activity A ke activity B, maka dalam prosesnya activity A akan otomatis memanggil onPause(), kemudian onStop(), dan onDestroy() tidak akan terpanggil (Karna status Activity A masih belum finish), baru di activity B akan memulai activity seperti biasanya dari onCreate() > onStart() > onResume().
  4. Setelah sudah di activity B, kemudian kita exit dari activity B, maka B akan memanggil onPause() > onStop() > onDestroy(), dan activity A akan kembali memanggil onStart() > onResume().
Kurang lebih seperti itu umumnya siklus activity. Untuk lebih jelasnya lagi coba perhatikan cuplikan video berikut untuk bisa melihat perbedaan antara onCreate(), onStart(),  onResume(), onPause(), onStop(), ataupun onDestroy() : 
 

2.  Bagaimana Cara Penggunaan Activity di Android Studio?

Tentunya kalian juga pasti penasaran gimana sih kita mendefinisikan sebuah activity di Android Studio? Nah, dari sini kalian coba untuk memulai ngodingnya.
  1.  pertama yang harus kalian lakukan adalah membuat project Android terlebih dahulu dengan Android Studio (Saat ini saya memakai Android Studio versi 3.4.2).
  2. Jika sudah membuat project-nya,  silahkan ke directory app/build.gradle di Android Studio kalian, dan pastikan sudah menambahkan salah satu dependency atau library dari AppCompat, yaitu:
    dependencies { 
              implementation 'androidx.appcompat:appcompat:1.0.2'
    }


  3.  Kemudian kalian wajib membuat class-nya terlebih dahulu, dengan Klik Kanan pada java package tujuan kalian > New > Java Class. Katakanlah kalian akan membuat ActivityB dengan superclass dari AppCompatActivity (perhatikan gambar berikut) dan klik OK.
  4. Setelah itu, ActivityB yang sudah dibuat tadi wajib hukumnya harus di daftarkan terlebih dahulu di AndroidManifest.xml. Activity tanpa kita daftarkan terlebih dahulu di AndroidManifest.xml (Lihat gambar dibawah), maka activity class yang kita buat akan membuat aplikasi kalian akan crash jika ada perintah untuk memulai activity tersebut.
    Begini penampakan crash yang akan kalian terima jika belum mendaftarkan Activity Class yg dibuat ke Android.Manifest.xml

     08-19 02:11:37.882 23412-23412/com.daus.activity E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.daus.activity, PID: 23412
        android.content.ActivityNotFoundException: Unable to find explicit activity class {com.daus.activity/com.daus.activity.ActivityB}; have you declared this activity in your AndroidManifest.xml?
            at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805)
            at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523)
            at android.app.Activity.startActivityForResult(Activity.java:3977)
            at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
            at android.app.Activity.startActivityForResult(Activity.java:3929)
            at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
            at android.app.Activity.startActivity(Activity.java:4268)
            at android.app.Activity.startActivity(Activity.java:4236)
            at com.daus.activity.MainActivity.onClick(MainActivity.java:33)
            at android.view.View.performClick(View.java:5273)
            at android.view.View$PerformClick.run(View.java:21592)
            at android.os.Handler.handleCallback(Handler.java:815)
            at android.os.Handler.dispatchMessage(Handler.java:104)
            at android.os.Looper.loop(Looper.java:207)
            at android.app.ActivityThread.main(ActivityThread.java:5789)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
            at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
    
  5.  Cara memanggil Activity
  6. 
      Intent intent = new Intent(this, ActivityB.class);
      startActivity(intent);
    
    
  7.  Cara mengakhiri Activity, panggil perintah ini
  8. 
    finish();
    
  9. Cara mengirim data antara ActivityA ke ActivityB
    
    
    Intent intent = new Intent(this, ActivityB.class);//menuju ke ActivityB
    intent.putExtra("DATA_A","Data dari B");//utk mengirim String
    intent.putExtra("DATA_B",1);//utk mengirim integer
    intent.putExtra("DATA_C",0.5);//utk mengirim double
    intent.putExtra("DATA_C",0.5f);//utk mengirim float
    intent.putExtra("DATA_C",new int[]{0,1,2,3});//utk mengirim integer array
    intent.putExtra("DATA_C",new String[]{"A","B","C"});//utk mengirim integer array
    startActivity(intent);
    
    
  10. Cara menerima data dari point nomer 6
  11. 
            Intent intent = getIntent();
            String DATA_A = intent.getStringExtra("DATA_A");//menerima string
            int DATA_B = intent.getIntExtra("DATA_B",0);//menerima integer
            double DATA_C = intent.getDoubleExtra("DATA_C",0.0);//utk menerima double
            float DATA_D = intent.getFloatExtra("DATA_D",0.5f);//utk menerima float
            int[] DATA_E = intent.getIntArrayExtra("DATA_E");//utk menerima integer array
            String[] DATA_F = intent.getStringArrayExtra("DATA_F");//utk menerima integer array
    
    


  12. Cara mengirim Object dari ActivityA ke ActivityB
    Pastikan terlebih dahulu object yang kalian buat harus ada Serializable. Lihat contoh Object berikut:
  13. 
    public class ObjectData implements Serializable {
        String dataHuruf;
        int dataInteger;
        double dataDouble;
        float dataFloat;
        int[] dataArrayInteger;
        String[] dataArrayString;
        
        public ObjectData(String dataHuruf, int dataInteger, double dataDouble, float dataFloat, int[] dataArrayInteger, String[] dataArrayString){
            this.dataHuruf = dataHuruf;
            this.dataInteger = dataInteger;
            this.dataDouble = dataDouble;
            this.dataFloat = dataFloat;
            this.dataArrayInteger = dataArrayInteger;
            this.dataArrayString = dataArrayString;
        }
    
        public int getDataInteger() {
            return dataInteger;
        }
    
        public String getDataHuruf() {
            return dataHuruf;
        }
    
        public float getDataFloat() {
            return dataFloat;
        }
    
        public double getDataDouble() {
            return dataDouble;
        }
    
        public int[] getDataArrayInteger() {
            return dataArrayInteger;
        }
    
        public String[] getDataArrayString() {
            return dataArrayString;
        }
    }
    
    
    Kemudian panggil object tersebut, caranya sama dengan point nomer 8 yaitu dengan cara berikut :

    //inisiali sasi objeknya terlebih dahulu
    ObjectData objectData = new ObjectData("Ini huruf", 2, 1.1, 2.3f, new int[]{1,2,3,4},new String[]{"AA","BB","CC",})
    //kirim bersama dengan Intent yang dinisialisasi di point nomer 8
    intent.putExtra("DATA_OBJECT",objectData);
    
  14. Cara Menerima Object Object Dari ActivityA ke ActivityB. Sebenarnya hampir sama juga dengan point nomer 9, hanya saja harus menambahkan object dan pastikan ada kondisi pengecekan apakah object tersebut NULL atau tidak. Berikut syntax-nya:
    
     ObjectData objectData = (ObjectData) intent.getSerializableExtra("DATA_OBJECT");
            if (objectData!=null){
                //antisipasi agar tidak crash
            }
    


Mungkin kurang lebih seperti itu yang bisa kita bahas tentang Activity di Android Programming. Silahkan comment saja dibawah jika ada pertanyaan.

Semoga bermanfaat,
Wassalamualaikum...

No comments:

Post a Comment

Memahami LinearLayout di Android Programming

Assalamualaikum sobat debugging... Alhamdulillah akhirnya kita kembalimencoba mengexplore lagi tentang dunia Android Programming.. Kali...