Tuesday, June 25, 2013

Malam Pertama (KKN!)


Akhirnya sampai juga ya di lokasi KKN Cibabat.  Sudah dapat rumah kontrakan kok.

Pas datang... ini toh Cibabat.. Lokasi KKN ini ternyata sudah pernah saya datangi sebelumnya heh! Hahahah. Kalau KKN memiliki stereotip sebagai kegiatan yang mendatangi desa-desa nun jauh-terpelosok-terpencil sejauh angan-angan terbayang di sana (oke, ini lebay), lain halnya jikalau kamu berada di lokasi ini. Cibabat itu kota cuy....

Karena kota jadi bingung juga sih mikirnya buat bikin tema lingkungan hidupnya gimana, karena sejauh ini, saya memperhatikan Cimahi lumayan tertata. Hm... mungkin memberi pencerahan dengan propaganda tentang sampah sebelum Cimahi terlalu Urban ya?

Di Cimahi lebih panas daripada daerah Geger Kalong. Yang di Ciwidey sama Lembang apa kabarnya tuh? Mungkin lagi peluk-pelukan satu dengan yang lainnya (stop, jangan bayangkan)

Ciao deh, cukup sampai sini aja blog hari ini. Besok rencananya mau apel di kantor kecamatan buat ketemu dengan... ah.. something something yang perlu diurus lah.

*lalu tidur*

Friday, June 21, 2013

Persiapan menuju KKN: Barang

Barang. Haha! Ya, inilah yang diperlukan untuk pindah-pindah kehidupan selama 40 hari ke depan. Sandang pangan papan harus disiapkan sedini mungkin agar dapat melaksanakan kegiatan KKN yang pol (iya gitu?). Apa saja sih yang harus dibawa? Saya sendiri membuat catatan dengan memisahkannya menjadi barang pribadi dan barang umum.


Nah ini list barang pribadi:

  1. Alat makan
    1. Gelas
    2. Piring
    3. Sendok
    4. Garpu
  2. Pakaian
    1. Kaos
    2. Kemeja
    3. Celana panjang
    4. Celana pendek
    5. Mmm... dalaman
    6. Celana training
    7. Celana sholat (saya kalau sholat pake celana khusus, hohoho)
    8. Baju koko (buat ke mesjid, apalagi sebentar lagi ramadhan)
    9. Sajadah
    10. Sarung
    11. Selimut
    12. Jaket
    13. Sendal
    14. Sepatu
    15. Kaos kaki
    16. Jaster (jas almamater)
    17. Tas kecil
    18. Tas ransel
  3. Alat mandi
    1. Handuk
    2. Sabun
    3. Shampoo
    4. Sabun cuci muka
    5. Odol.. err.. pasta gigi
    6. Sikat gigi
    7. Sisir
    8. Cukuran buat nyukur (obviously..)
  4. Alat nyuci
    1. Ember
    2. Sabun cuci baju
    3. Sikat baju
    4. Hanger
    5. Jepit baju
  5. Bacaan
    1. Kitab (Al-Quran)
  6. Alat tulis
    1. Pulpen
    2. Pensil
    3. Penghapus
    4. Kertas
    5. Buku tulis
  7. Gadget
    1. Laptop + chargernya
    2. Handphone + chargernya
    3. Cabang colokan (namanya terminal ya?)
    4. Senter
  8. Hiburan
    1. Kartu game, prefer PetWar sih
  9. Obat dan keperluan medis (beberapa nama disini ngiklan, sori ya~)
    1. Entrostop, Err... obat anti diare
    2. Promag, obat maag
    3. Betadine, povidone iodine kalau mau kerennya mah
    4. Plester, Handsaplast
    5. Bioplacenton, obat luka bakar, siapa tahu ada apa-apa, ada baiknya siap-siap
    6. Cotton bud
    7. Cendo Xytrol, obat tetes mata
    8. Gunting kuku
  10. Tools
    1. Gunting
  11. Makanan pribadi
    1. Mie
    2. Energen, sereal instan
    3. Permen
Whoaaa banyak juga ya?

Kemudian selanjutnya barang umum, barang ini adalah barang-barang yang bisa dibagi tugasnya dengan anggota kelompok:

  1. Alat masak
    1. Rice cooker
    2. Panci
    3. Galon
    4. Kompor
    5. Tabung Gas LPG
    6. Spatula
    7. Sendok nasi
  2. Bahan masak
    1. Beras
    2. garam
    3. gula
    4. teh
    5. saos
    6. kecap
    7. kopi
    8. minyak
  3. Alat bersih-bersih
    1. Sabun cuci piring
    2. Sabut cuci piring
    3. Pengharum lantai
    4. Kain pel
  4. Sekretariat
    1. Printer
    2. Kertas
    3. Planning board
    4. Spidol
    5. Spanduk
    6. Stepel
  5. Tools
    1. Tali rafia
    2. Tali jemuran
    3. Palu
    4. Paku
    5. Isolasi
  6. Yang diberi
    1. Plakat
Aha! Ada yang kurang?

KKN Lingkungan Hidup

Di Universitas Pendidikan Indonesia (UPI) ada sebuah mata kuliah umum yang harus diambil oleh setiap mahasiswa. Nama mata kuliah tersebut adalah KKN, yang merupakan singkatan dari Kuliah Kerja Nyata. Dan kali ini saya berkesempatan untuk melaksanakan KKN.

Mata kuliah KKN dilaksanakan setiap semester. Kuliahnya sendiri bukan dilaksanakan di dalam ruang kelas, tetapi mahasiswa diajak untuk terjun ke masyarakat sembari mengerjakan program tertentu.

Semua peserta mata kuliah KKN di UPI akan dikelompok-kelompokkan ke daerah-daerah tertentu. Setiap kelompok memiliki tema yang diusung masing-masing. Ada 6 tema utama yang ditawarkan oleh UPI, nah salah satunya adalah Lingkungan Hidup.

Saya dan rekan-rekan kelompok saya mendapatkan tema KKN Lingkungan Hidup dan berlokasi di Kelurahan Cibabat, Kota Cimahi. Err.... apa lagi ya? Kita lihat saja nanti apa yang akan terjadi. Ikuti saja di Label KKN. Ciao!

Thursday, June 13, 2013

Whoops! On The Way 7th Semester

Saya sudah semester 6, mata kuliah apa yang harus saya kontrak untuk semester 7?

Di prodi ilmu komputer jumlah mata kuliah yang harus dikontrak adalah 146 SKS, yang diantaranya terdapat 16 SKS mata kuliah pilihan.


Berikut mata kuliah yang sudah saya kontrak. Eit ,sebelumnya, yang saya tulis ini berdasarkan buku kurikulum tahun 2010 ya. Kurikulum di UPI suka berubah-ubah, jadi mohon maklum.

Format yang saya tulis seperti ini: Kode mata kuliah, nama mata kuliah, kemudian SKS nya. Nah, ini dia, taraa..

Mata kuliah program studi
IK300 Pengantar Teknologi Informasi 2
IK301 Konsep Teknologi 2
KU108 Pendidikan Jasmani dan Olahraga 2
MA300 Matematika Dasar 3
MA301 Fisika Umum 3
MA302 Kimia Umum 3
MA303 Biologi Umum 3
IK302 Bahasa Inggris 2
IK310 Algoritma dan Pemrograman I 2
IK320 Rangkaian Elektronika 2
IK350 Kalkulus 3
IK352 Aljabar Linear dan Matriks 3
IK420 Arsitektur dan Organisasi Komputer 3
KU106 Pendidikan Bahasa Indonesia 2
IK351 Matematika Diskret 3
IK311 Algoritma dan Pemrograman II 3
IK321 Sistem Digital 3
IK330 Basis Data 2
IK380 Pemrograman Visual 3
IK451 Metode Numerik 3
KU105 Pendidikan Kewarganegaraan 2
IK331 Sistem Basis Data 3
IK353 Statistika 3
IK370 Rekayasa Perangkat Lunak 3
IK410 Struktur Data 3
IK421 Jaringan Komputer 3
IK422 Sistem Operasi 4
IK470 Manajemen Proyek Perangkat Lunak 2
IK452 Teori Bahasa dan Automata 3
IK480 Pemrograman Internet 2
IK490 Teknik Riset Operasi 3
IK492 Seminar 3
IK494 Kewirausahaan 2

Totalnya = 88

Mata kuliah keahlian akademik
IK432 Metodologi Berorientasi Objek 3
IK460 Kecerdasan Buatan 3
IK571 Data Warehouse dan Mining 3
IK543 Mobile Computing 3
Totalnya = 12

Mata kuliah dasar akademik
IK340 Disain Web 2
IK450 Logika Informatika 2
totalnya = 4

Mata kuliah umum
KU100 Pendidikan Agama Islam 2
KU107 Pendidikan Lingkungan Sosial, Budaya, dan Teknologi (PLSBT) 2
KU300 Seminar Pendidikan Agama Islam 2
KU400 Kuliah Kerja Nyata (KKN) 2
totalnya = 8

Pilihan
IK411 Analisis dan Disain Algoritma 3
IK440 Teknik Multimedia 3
IK481 Pemrograman Berorientasi Objek 3
IK493 Komputer dan Masyarakat 2
totalnya  = 11

Totalnya?

Nah, jadi jumlah SKS mata kuliah yang sudah saya kontrak adalah:
MKPS = 88
MKU = 8
MKDA = 4
MKKA = 12
PILIHAN = 11
Total = 123 SKS

Berarti ada 23 SKS lagi yang perlu saya ambil. Dari 23 SKS itu 6 SKS buat skripsi nanti, jadi sisanya 17 SKS.

Untuk pilihan saya masih kurang 5 SKS lagi, hm.. kayaknya saya bakalan memilih:

Sistem cerdas (3 sks)
basis data non relasional (3 sks)

Itu sih yang kata di buku kurikulum yang tersedia buat semester 7. Kalau saya memilih Teknik Simulasi Pemodelan(3 SKS) nggak ada di semester ganjil, dan saya nggak jadi (sekarang ngontrak teknik multimedia). Kalau mau juga... saya bisa ngambil Pengajaran Berbasis Komputer (2 sks) sih... cuman itu bikin media pembelajaran.. heheh.

Jadi apa yang mau dikontrak?

Sebelum itu kita telaah dulu apa yang wajib dikontrak.
Dari buku kurikulum, di semester 7 ada mata kuliah berikut:
MKU
KKN (2 sks)

MKK
Seminar (3 sks)
Kewirausahaan(2 sks)
Interaksi manusia dan komputer (3 sks)

Pilihan
Basis Data Non Relasional (3 sks)
Basis Data Terdistribusi (3 sks)
Sistem Pendukung Keputusan (3 sks)
Sistem Cerdas (3 sks)
Pemrograman Berorientasi Objek (3 sks) sudah
Komputer Dan Masyarakat (3 sks) sudah
Teknik Kompilasi (3 sks)
Teknik Komunikasi Data (3 sks)
Kontrol dan Robotika (3 sks)
E-bisnis (3 sks)

MKDA
Grafika Komputer (3 sks)

MKKA
Sistem Informasi (3 sks)
Persamaan Diferensial (3 sks)

Untuk semester ganjil yang bisa dikontrak:
Game programming (3 sks)
Interpretasi dan pengolahan citra (3 sks)

Kemudian mahasiswa macam saya ini (baca: angkatan dewasa, uhuk) harus mengontrak PLA (Program Latihan Akademik). Ini semacam magang gitu sih, harus nyari tempat PLA nya juga dimana.

Nah aku jadi mau ngontrak yang mana? Karena saya masih kurang 17 SKS jadinya ngontrak:
Sistem cerdas (3 sks) pilihan
Basis data non relasional (3 sks) pilihan
Interaksi Manusia dan Komputer (3 sks)
Grafika Komputer (3 sks)
Interpretasi dan pengolahan citra (3 sks)
Game programming (3 sks)

Totalnya: 15 sks

Nah sisa 2 sks nya itu apa milih PLA ya? atau PLA semester 8 aja? Gabung sama skripsi gitu? Wah masih belum tahu kapan. Post ini saya update kalo PLA bisa digabung kayak gitu.

Gimana dengan kamu? Bagi-bagi infonya juga ya :D

Saturday, June 8, 2013

Saya dan kampus

Begitu peliknya kehidupan kampus tidak usah dipungkiri. Namun diantara peliknya kehidupan ada benih-benih permata yang memburai (alamak, bahasanya). Inilah saya, di kampus saya tercinta.

Beberapa alumnus, kakak tingkat (yang Insya Allah sebentar lagi lulus), kawan-kawan dan adik tingkat memiliki kemampuan luar biasa, kompeten, mahir, di bidangnya masing-masing. Beberapa memiliki kemampuan mengolah gambar 3D, ada juga yang mahir dalam vector. Ada yang jago sekali dalam koding, membuat aplikasi-aplikasi yahud. Ada yang memiliki kemampuan bersosialisasi luar biasa. Ada yang memiliki jiwa entrepreneur tinggi. Semuanya lengkap.

Satu hal yang kurang mungkin, saya belum sempat menemukan kemampuan untuk berbagi akhir-akhir ini.

Saya sendiri memiliki beberapa ilmu yang rasanya ingin sekali disampaikan ke lainnya, namun terkendala dengan kegiatan dan waktu yang tidak mencukupi maka saya belum menyempatkan diri (haih, nggak sempat, atau males?) untuk berbagi ilmu. Ciyus ciyus, belum sempat. Pengen banget ngajak yang lainnya untuk dicemplungkan ke dunia game development. Seperti yang mas @dwiperdana bilang di GDG13 yang lalu, pekerja di industri game masih kurang. Kalau bisa ngeshare something yang worth (bahasanya campur-campur gini) bisa ngebantu untuk membuat industri gamedev Indonesia yang berkualitas.

Share something is beautiful, daripada cuma minta kan?


akhir kata, demikian sepenggal tulisan saya yang ingin saya bagikan *mendadak ingin nulis*

Sunday, June 2, 2013

Teroka ganti jadi Thread+Runnable di Android

Bener kan, banyak hal yang aneh-aneh kalau nggak pake Framework...

Awalnya

Beberapa waktu yang lalu Teroka menggunakan Asyntask. Kata Pak Yudi Asyntask gunanya untuk loading yang sebentar-sebentar, misalnya loading data dari internet, setelah itu tasknya diputus.
Saat praktikum kami diajarkan untuk menggunakan Asyntask untuk animasi sederhana, gambar android gerak dari kiri ke kanan, animasi hanya dilakukan dengan looping sebanyak 50 kali. Lain halnya dengan Teroka, animasi akan dilakukan terus-menerus sampai aplikasinya ditutup. Nah ini yang jadi masalah.

Anehnya Error

Dengan Asyntask kurang tahu kenapa kadang animasinya jalan, kadang nggak. Waktu sedang mengerjakan Teroka anehnya Asyntask juga nggak bisa di-cancel. Setiap dilakukan Asyntask.cancel(true) muncul error seperti ini

05-31 15:25:48.750: W/System.err(18305): java.lang.InterruptedException
05-31 15:25:48.800: W/System.err(18305):   at java.lang.VMThread.sleep(Native Method)
05-31 15:25:48.800: W/System.err(18305):  at java.lang.Thread.sleep(Thread.java:1031)
05-31 15:25:48.810: W/System.err(18305):  at java.lang.Thread.sleep(Thread.java:1013)
05-31 15:25:48.810: W/System.err(18305):  at com.tanyoo.teroka.AnimasiTask.doInBackground(AnimasiTask.java:27)
05-31 15:25:48.810: W/System.err(18305):  at com.tanyoo.teroka.AnimasiTask.doInBackground(AnimasiTask.java:1)
05-31 15:25:48.810: W/System.err(18305):  at android.os.AsyncTask$2.call(AsyncTask.java:264)
05-31 15:25:48.810: W/System.err(18305):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-31 15:25:48.820: W/System.err(18305):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-31 15:25:48.820: W/System.err(18305):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
05-31 15:25:48.830: W/System.err(18305):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-31 15:25:48.830: W/System.err(18305):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-31 15:25:48.830: W/System.err(18305):  at java.lang.Thread.run(Thread.java:856)

Hoh.. nggak tahu deh kenapa.

Thread + Runnable, tapi Draw lama

Setelah konsultasi dengan dosen saya, ternyata memang tidak bisa dengan AsynTask, akhirnya menggunakan primitif Thread.

Yang aneh itu drawing pada Thread ternyata agak lama, dan telat juga. Gawat kalau mau draw banyak bitmap, bisa-bisa gagal gara-gara Bitmapnya belum nyampe (akhirnya jadi NULL)

Solusinya adalah dengan menggunakan status bitmap sudah di load baru kemudian digambar.

Bitmap selama ini saya load di onWindowFocusChanged, jadi ada status yang namanya ready untuk menyatakan gambar sudah di proses dan di load dulu.

Coba lihat contoh di Help ini:



        @Override
 public void onWindowFocusChanged(boolean hasWindowFocus) {
  // TODO Auto-generated method stub
  super.onWindowFocusChanged(hasWindowFocus);
  
  // resize gambar
  elogo.resizeImage((int)getPercentWidth(65), (int)getPercentHeight(19));
  ePreviewGame.resizeImage((int)getPercentWidth(100), (int)getPercentHeight(56));
  eButtonStatistik.EbuttonStat((int)getPercentWidth(42), (int)getPercentHeight(10));
  eBackground.resizeImage((int)getPercentWidth(100),(int)getPercentHeight(100));
  
  //set posisi
  elogo.setPosition(getPercentWidth(17), getPercentHeight(2));
  ePreviewGame.setPosition(getPercentWidth(0), getPercentHeight(25));
  eButtonStatistik.setPosition(getPercentWidth(29), getPercentHeight(88));
  eBackground.setPosition(getPercentWidth(0), getPercentHeight(0));
  
  ready = true;
 }
 
Di paling akhir ada variabel ready kan? Nah itu dipanggil ketika thread berjalan. Ini yang saya lakukan ketika draw


 public void doDraw(Canvas c){
  if (c != null) {
   //clear screen
   c.drawColor(Color.WHITE);
   
   if (gameView.getReady()) {
    gameView.draw(c, cat);
   }
  }
 }

Lihat, pertama-tama dicek dulu apakah ready == true (saya lakukan dengan methode getReady), baru digambar.

Tapi ini masih ngelag

Lucu juga ketika tombol dipencet dia loading beberapa saat dulu baru keload gambarnya. Tapi lumayan lah, dan saat-saat menunggu tadi bisa diganti jadi loading, tapi yang penting sekarang itu fungsional dulu lah ya.

Masih ada error yang saya temui sekarang, kalau dari satu activity, ke activity lain, kemudian orientasi berubah, dan kembali ke activity sebelumnya  kadang jadi error. Sepertinya letak untuk ready ada di salah satu state activity yang harus di handle.

Bagi kamu yang mau ngikutin kode yang saya, @ratihvuzy, @ndaindana, @yolahoshi, dan @rewingw buat bisa lihat di http://github.com/igrir/teroka :D

Oh tidak! Sudah tanggal 2! Sudah molor ini, harus bikin gamenya! Aaak!!

Wish us luck!

p.s: Tablet saya nggak mau ngecas kalo lagi jalan aplikasi dan dicoloknya di komputer. Kurang voltase kayaknya.

Saturday, June 1, 2013

Foto dulu ah~

Development di Galaxy Tab lebih cepat pas deploying ternyata. Nggak tahu kenapa, mungkin Xperia Tipo saya sudah terlalu banyak memory... atau prosesornya lebih rendah daripada Tab.


Android Out Of Memory Setelah Memanggil Bitmap

Akhirnya kami bisa juga bikin tampilannya dengan klik tombol dan berpindah layar. Layouting juga bisa dipakai, dan yang lebih maknyusnya, layoutnya responsif berdasarkan besar layar. Pertanyaan intermezzo, kenapa nggak pake framework/engine game? Aih, sudah terlanjur terkerjakan. Maybe later... heheh.. Tapi karena nggak pake engine game yang sudah ada, pastinya harus main-main di cara ngerender gambarnya. Ini merepotkan.
Tadaaaa~~ Layoutnya. Warnanya merah nyeremin kata @ndaindana. Hehe, ini cuman buat nyobain ngetest "jalan" aja sebenarnya, kalo warnanya putih pas ngetest suka disangka nge-hang

Masalah

Setelah mengerti cara membuat view dengan framework-framework-an yang kami bikin, kemudian kami membagi tugas untuk membuat tampilan (view) masing-masing. Hasilnya jadi dan sesuai yang diharapkan. Tapi ternyata ketika saya menekan tombol game dan kembali, berulang-ulang, dapatnya Out Of Memory!

Ah~ Menyebalkan deh kalau hubungannya sama memory. Berarti harus optimasi.

Setelah membaca beberapa artikel dan diskusi stackoverflow, ternyata bitmap dalam Android memang ribet dan bermasalah.

Beberapa link artikel setelah beberapa waktu di-Googling:
http://stackoverflow.com/questions/11201502/clean-memory-in-android/11201652#11201652
http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html
http://blog.pseudoblue.com/2010/08/15/android-bitmaps-and-memory-leaks/

Katanya Bitmap dalam Android berada di bagian dari aplikasi yang tidak disentuh oleh Garbage Collector (GC), akhirnya memori bertambah terus karena saya panggil di onCreate.

Solusi

Untuk itu solusinya pada proyek ini adalah dengan melakukan bmp.recycle() DI SETIAP bitmap yang digunakan agar bisa "disentuh" oleh GC. Karena repot jika harus melakukan blablabla.recycle() di setiap Entity yang dibuat, maka saya sudah membuatkan method khusus di dalam GameView, jadi tinggal pakai. Sekalian aja supaya kegiatan yang selama ini dilakukan berulang terhadap Entity digabungkan. Jadi bersiaplah dengan.... jreng jeng jeng... EntityCollection!

Cara Pakai Method Baru

1. addEntity
Method ini menambahkan entity apa saja yang ada dalam view. Jadi semua entity yang dipakai HARUS DIMASUKKAN ke dalam addEntity ini.

ini contoh yang digunakan dalam view Petualangan
 
  einfo = new EInfobar(getResources());
  ebardistance = new EBarDistance(getResources());
  edistance = new EDistance(getResources());
  ehealthpoint = new EHealthPoint(getResources());
  ebarhealth = new EBarHealth(getResources());
  egameview = new EGameView(getResources());
  estars = new EStars(getResources());
  esteps = new ESteps(getResources());
  eshop = new EShop(getResources());
  epotion = new EPotion(getResources());
  elevel = new ELevel(getResources());
  ecalore = new ECalore(getResources());
  
  addEntity(einfo, ebardistance, edistance,
     ehealthpoint, ebarhealth, egameview,
     estars, esteps, eshop, epotion, elevel, ecalore);

Nah perhatikan, setiap Entity dideklarasikan satu-persatu, kemudian akhirnya dimasukkan di dalam addEntity dan setiap variabelnya dipisahkan dengan koma.


2. drawEntityCollection
Method ini menggambarkan entity-entity yang sudah dimasukkan ke dalam  EntityCollection dari method addEntity di atas. Perhatikan contoh berikut. Kode ini berada dalam method onDraw yang ada dalam view:
  //  einfo.draw(c, cat);
  //  egameview.draw(c, cat);
  //  edistance.draw(c, cat);
  //  ehealthpoint.draw(c, cat);
  //  ebardistance.draw(c, cat);
  //  ebarhealth.draw(c, cat);
  //  estars.draw(c, cat);
  //  esteps.draw(c, cat);
  //  eshop.draw(c, cat);
  //  ecalore.draw(c, cat);
  //  epotion.draw(c, cat);
  //  elevel.draw(c, cat);
  drawEntityCollection(c, cat);

lihat, awalnya kita menggunakan einfo.draw(c,cat) dsb dsb dsb (yang diberi komentar). Sekarang cukup panggil drawEntityCollection(c,cat);

ingat, kamu harus memasukkan ke dalam EntityCollection apa saja entity yang akan didraw

3. RecycleEntityCollection
Nah, method ini yang mengembalikan agar memori bisa dipakai.
Method ini ditaruh di dalam kelas Activity dan ditaruh dalam method onStop. Perhatikan contoh berikut:

 @Override
 protected void onStop() {
  // TODO Auto-generated method stub
  super.onStop();
  
//  mu.ebardistance.recycle();  
//  mu.einfo.recycle();
//  mu.ebardistance.recycle();
//  mu.edistance.recycle();
//  mu.ehealthpoint.recycle();
//  mu.ebarhealth.recycle();
//  mu.egameview.recycle();
//  mu.estars.recycle();
//  mu.esteps.recycle();
//  mu.eshop.recycle();
//  mu.epotion.recycle();
//  mu.elevel.recycle();
//  mu.ecalore.recycle();
  //membebaskan memori
  mu.recycleEntityCollection();
 }
 
awalnya untuk melakukan recycle harus memanggil entity-entity yang ada di dalam view dan dipanggil recycle. Sekarang tinggal panggil mu.recycleEntityCollection(). mu adalah nama view yang digunakan oleh activity ini.

Kesimpulan

Jadi jangan lupa kalau mau bikin view yang ada entity-nya harus:
  1. Buat kelas entitynya
  2. Pastikan entity sudah memanggil resource
  3. Instansiasi entitynya di dalam View
  4. Masukkan entity-entity yang digunakan ke dalam EntityCollection di konstruktor menggunakan addEntity
  5. Draw dengan drawEntityCollection pada method onDraw
  6. Pada Activity, buat method yang Override onStop, panggil viewnya.recycleEntityCollection() agar tidak OutOfMemory
Sekian! Merepotkan juga ya? But it was a great fun coding journey though, hehe :D.

p.s: sekarang masih bermasalah dengan Thread nih, hm... selesaikan tampilan dulu lah ya~ Sudah deadline soalnya