From bfbd27b84fb310ed007705f18cf13aeeda098096 Mon Sep 17 00:00:00 2001 From: David Friedman Date: Fri, 24 Jul 2015 19:52:06 -0700 Subject: Localization for Android fundamentals Bug: 20503562 Change-Id: Ia98618932aef2b92a48e4d6e69749c220161722f --- .../intl/in/guide/components/fundamentals.jd | 480 +++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 docs/html-intl/intl/in/guide/components/fundamentals.jd (limited to 'docs/html-intl/intl/in/guide/components/fundamentals.jd') diff --git a/docs/html-intl/intl/in/guide/components/fundamentals.jd b/docs/html-intl/intl/in/guide/components/fundamentals.jd new file mode 100644 index 000000000000..bd9a500f77a5 --- /dev/null +++ b/docs/html-intl/intl/in/guide/components/fundamentals.jd @@ -0,0 +1,480 @@ +page.title=Dasar-Dasar Aplikasi +@jd:body + +
+ +
+ +

Aplikasi Android ditulis dalam bahasa pemrograman Java. Android SDK Tools mengkompilasi +kode Anda—bersama data dan file sumber daya —ke dalam APK: Paket Android, +yaitu file arsip berekstensi {@code .apk}. Satu file APK berisi semua konten +aplikasi Android dan merupakan file yang digunakan perangkat berbasis Android untuk menginstal aplikasi.

+ +

Setelah diinstal di perangkat, setiap aplikasi Android tinggal di sandbox keamanannya sendiri:

+ + + +

Dengan cara ini, sistem Android mengimplementasikan prinsip privilese minim. Ini berarti, +secara default aplikasi hanya memiliki akses ke komponen yang diperlukannya untuk melakukan pekerjaannya dan +tidak lebih dari itu. Hal ini menghasilkan lingkungan yang sangat aman sehingga aplikasi tidak bisa mengakses bagian +sistem bila tidak diberi izin.

+ +

Akan tetapi, ada beberapa cara bagi aplikasi untuk berbagi data dengan aplikasi lain dan bagi aplikasi +untuk mengakses layanan sistem:

+ + + +

Hal tersebut mencakup dasar-dasar tentang cara aplikasi Android berada di dalam sistem. Bagian dokumen +selanjutnya memperkenalkan Anda pada:

+ + + + +

Komponen Aplikasi

+ +

Komponen aplikasi adalah blok pembangun penting dari aplikasi Android. +Setiap komponen merupakan titik berbeda yang digunakan sistem untuk memasuki aplikasi. Tidak semua komponen +merupakan titik masuk sebenarnya bagi pengguna dan sebagian saling bergantung, namun masing-masing komponen tersedia +sebagai kesatuan sendiri dan memainkan peran tertentu—masing-masing merupakan +blok pembangun unik yang mendefinisikan perilaku aplikasi secara keseluruhan.

+ +

Ada empat macam tipe komponen aplikasi. Setiap tipe memiliki kegunaan tersendiri +dan daur hidupnya sendiri yang mendefinisikan cara komponen dibuat dan dimusnahkan.

+ +

Berikut ini empat tipe komponen aplikasi:

+ +
+ +
Aktivitas
+ +
Sebuah aktivitas mewakili satu layar dengan antarmuka pengguna. Misalnya, +aplikasi email mungkin memiliki satu aktivitas yang menampilkan daftar email +baru, aktivitas lain untuk menulis email, dan aktivitas satunya lagi untuk membaca email. Walaupun +semua aktivitas bekerja sama untuk membentuk pengalaman pengguna yang kohesif dalam aplikasi email, +masing-masing tidak saling bergantung. Karenanya, aplikasi berbeda bisa memulai +salah satu aktivitas ini (jika aplikasi email mengizinkannya). Misalnya, aplikasi kamera bisa memulai +aktivitas dalam aplikasi email yang membuat email baru agar pengguna bisa berbagi gambar. + +

Aktivitas diimplementasikan sebagai subkelas {@link android.app.Activity} dan Anda bisa mengetahui selengkapnya +tentang hal ini dalam panduan pengembang Aktivitas +.

+
+ + +
Layanan
+ +
Sebuah layanan adalah komponen yang berjalan di latar belakang untuk melakukan +operasi yang berjalan lama atau untuk melakukan pekerjaan bagi proses jarak jauh. Layanan +tidak menyediakan antarmuka pengguna. Misalnya, sebuah layanan bisa memutar musik di latar belakang sementara +pengguna berada dalam aplikasi lain, atau layanan bisa menarik data lewat jaringan tanpa +memblokir interaksi pengguna dengan aktivitas. Komponen lain, seperti aktivitas, bisa memulai +layanan dan membiarkannya berjalan atau mengikat layanan untuk berinteraksi dengannya. + +

Layanan diimplementasikan sebagai subkelas {@link android.app.Service} dan Anda bisa mengetahui selengkapnya +tentang hal ini dalam panduan +pengembang Layanan.

+
+ + +
Penyedia konten
+ +
Sebuah penyedia konten mengelola seperangkat data-bersama aplikasi. Anda bisa menyimpan data +dalam sistem file, database SQLite, di web, atau lokasi penyimpanan permanen lainnya +yang bisa diakses aplikasi. Melalui penyedia konten, aplikasi lain bisa melakukan query atau bahkan +memodifikasi data (jika penyedia konten mengizinkannya). Misalnya, sistem Android menyediakan penyedia +konten yang mengelola informasi kontak pengguna. Karenanya, setiap aplikasi +dengan izin yang sesuai bisa melakukan query mengenai bagian dari penyedia konten (seperti {@link +android.provider.ContactsContract.Data}) untuk membaca dan menulis informasi tentang orang tertentu. + +

Penyedia konten juga berguna untuk membaca dan menulis data privat ke aplikasi Anda +dan tidak dibagikan. Misalnya, aplikasi contoh Note Pad menggunakan +penyedia konten untuk menyimpan catatan.

+ +

Penyedia konten diimplementasikan sebagai subkelas {@link android.content.ContentProvider} +dan harus mengimplementasikan seperangkat standar API yang memungkinkan aplikasi +lain melakukan transaksi. Untuk informasi selengkapnya, lihat panduan pengembang +Penyedia Konten.

+
+ + +
Penerima siaran
+ +
Sebuah penerima siaran adalah komponen yang merespons pengumuman siaran dalam lingkup +sistem. Banyak siaran yang berasal dari sistem—misalnya, siaran yang mengumumkan bahwa +layar telah dimatikan, baterai lemah, atau gambar telah direkam. +Aplikasi juga bisa memulai siaran—misalnya untuk menginformasikan ke +aplikasi lain bahwa sebagian data telah diunduh ke perangkat dan bisa digunakan aplikasi lain tersebut. Walaupun penerima +siaran tidak menampilkan antarmuka pengguna, penerima bisa membuat pemberitahuan baris status +untuk memberi tahu pengguna kapan kejadian siaran dilakukan. Meskipun penerima siaran umumnya cuma menjadi +"gerbang" untuk komponen lain dan dimaksudkan untuk melakukan pekerjaan dalam jumlah sangat minim. Misalnya +, penerima siaran bisa menjalankan layanan untuk melakukan beberapa pekerjaan berdasarkan kejadian. + +

Penerima siaran diimplementasikan sebagai subkelas {@link android.content.BroadcastReceiver} +dan setiap siaran dikirim sebagai objek {@link android.content.Intent}. Untuk informasi selengkapnya, +lihat kelas {@link android.content.BroadcastReceiver}.

+
+ +
+ + + +

Aspek unik dari desain sistem Android adalah aplikasi mana pun bisa memulai +komponen aplikasi lain. Misalnya, jika Anda menginginkan pengguna mengambil +foto dengan kamera perangkat, bisa saja aplikasi lain yang melakukannya dan aplikasi +Anda bisa menggunakannya, sebagai ganti mengembangkan aktivitas sendiri untuk mengambil foto. Anda tidak +harus menyatukan atau bahkan menautkan ke kode dari aplikasi kamera. +Sebagai gantinya, Anda tinggal memulai aktivitas di aplikasi kamera yang akan mengambil +foto. Bila selesai, foto akan dikembalikan ke aplikasi sehingga Anda bisa menggunakannya. Bagi pengguna, +kamera seakan menjadi bagian dari aplikasi Anda.

+ +

Saat sistem memulai komponen, sistem akan memulai proses untuk aplikasi itu (jika +belum berjalan) dan membuat instance kelas yang diperlukan untuk komponen. Misalnya, jika aplikasi Anda +memulai aktivitas dalam aplikasi kamera yang mengambil foto, aktivitas itu akan +berjalan dalam proses yang dimiliki oleh aplikasi kamera, bukan dalam proses aplikasi Anda. +Karenanya, tidak seperti aplikasi di sebagian besar sistem lain, aplikasi Android tidak memiliki titik +masuk tunggal (misalnya tidak ada fungsi {@code main()}).

+ +

Karena sistem menjalankan setiap aplikasi dalam proses terpisah dengan izin file yang +membatasi akses ke aplikasi lain, aplikasi Anda tidak bisa langsung mengaktifkan komponen dari aplikasi lain. Akan tetapi, sistem +Android bisa melakukannya. Jadi, untuk mengaktifkan +komponen dalam aplikasi lain, Anda harus mengirim pesan ke sistem yang menetapkan intent Anda untuk memulai +komponen tertentu. Selanjutnya sistem akan mengaktifkan komponen untuk Anda.

+ + +

Mengaktifkan Komponen

+ +

Tiga dari empat tipe komponen—aktivitas, layanan, dan +penerima siaran—diaktifkan oleh pesan asinkron yang disebut intent. +Intent saling mengikat setiap komponen saat runtime (Anda bisa menganggapnya +sebagai pembawa pesan yang meminta tindakan dari komponen lain), baik komponen itu milik aplikasi Anda +atau milik aplikasi lain.

+ +

Intent dibuat dengan objek {@link android.content.Intent}, yang mendefinisikan pesan untuk +mengaktifkan komponen tertentu atau komponen tipe komponen tertentu—masing-masing intent +bisa eksplisit atau implisit.

+ +

Untuk aktivitas dan layanan, intent mendefinisikan tindakan yang akan dilakukan (misalnya, untuk "melihat" atau +"mengirim" sesuatu) dan mungkin menetapkan URI data untuk ditindaklanjuti (salah satu hal yang mungkin perlu diketahui +oleh komponen yang akan dimulai). Misalnya, intent mungkin menyampaikan permintaan suatu +aktivitas untuk menampilkan gambar atau membuka halaman web. Dalam beberapa kasus, Anda bisa memulai +aktivitas untuk menerima hasil, dalam hal ini, aktivitas juga akan mengembalikan hasil +dalam {@link android.content.Intent} (misalnya Anda bisa mengeluarkan intent agar +pengguna bisa memilih kontak pribadi dan memintanya dikembalikan kepada Anda—intent yang dikembalikan menyertakan URI yang +menunjuk ke kontak yang dipilih).

+ +

Untuk penerima siaran, intent hanya mendefinisikan +pengumuman yang sedang disiarkan (misalnya, siaran untuk menunjukkan baterai perangkat hampir habis +hanya menyertakan string tindakan yang menunjukkan "baterai hampir habis").

+ +

Tipe komponen lainnya dan penyedia konten, tidak diaktifkan oleh intent. Melainkan +diaktifkan saat ditargetkan oleh permintaan dari {@link android.content.ContentResolver}. Resolver +konten menangani semua transaksi langsung dengan penyedia konten sehingga komponen yang melakukan +transaksi dengan penyedia tidak perlu dan sebagai gantinya memanggil metode pada objek {@link +android.content.ContentResolver}. Ini membuat lapisan abstraksi antara penyedia +konten dan komponen yang meminta informasi (demi keamanan).

+ +

Ada beberapa metode terpisah untuk mengaktifkan masing-masing tipe komponen:

+ + +

Untuk informasi selengkapnya tentang menggunakan intent, lihat dokumen Intent dan Filter + Intent. Informasi selengkapnya tentang mengaktifkan komponen +tertentu juga tersedia dalam dokumen berikut: Aktivitas, Layanan, {@link +android.content.BroadcastReceiver} dan Penyedia Konten.

+ + +

File Manifes

+ +

Sebelum sistem Android bisa memulai komponen aplikasi, sistem harus mengetahui +keberadaan komponen dengan membaca file {@code AndroidManifest.xml} aplikasi (file +"manifes"). Aplikasi Anda harus mendeklarasikan semua komponennya dalam file ini, yang harus menjadi akar +dari direktori proyek aplikasi.

+ +

Manifes melakukan banyak hal selain mendeklarasikan komponen aplikasi, +seperti:

+ + + +

Mendeklarasikan komponen

+ +

Tugas utama manifes adalah menginformasikan komponen aplikasi pada sistem. Misalnya, +file manifes bisa mendeklarasikan aktivitas sebagai berikut:

+ +
+<?xml version="1.0" encoding="utf-8"?>
+<manifest ... >
+    <application android:icon="@drawable/app_icon.png" ... >
+        <activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... >
+        </activity>
+        ...
+    </application>
+</manifest>
+ +

Dalam elemen <application> +, atribut {@code android:icon} menunjuk ke sumber daya untuk ikon yang mengidentifikasi +aplikasi.

+ +

Dalam elemen <activity>, +atribut {@code android:name} menetapkan nama kelas yang sepenuhnya memenuhi syarat subkelas {@link +android.app.Activity} dan atribut {@code android:label} menetapkan string yang akan +digunakan sebagai label yang terlihat oleh pengguna untuk aktivitas tersebut.

+ +

Anda harus mendeklarasikan semua komponen aplikasi dengan cara ini:

+ + +

Aktivitas, layanan, dan penyedia konten yang Anda sertakan dalam kode sumber, namun tidak +dideklarasikan dalam manifes, tidak akan terlihat pada sistem dan, akibatnya, tidak pernah bisa berjalan. Akan tetapi, +penerima siaran +bisa dideklarasikan dalam manifes atau dibuat secara dinamis dalam kode (sebagai objek +{@link android.content.BroadcastReceiver}) dan didaftarkan pada sistem dengan memanggil +{@link android.content.Context#registerReceiver registerReceiver()}.

+ +

Untuk informasi selengkapnya tentang cara menstrukturkan file manifes untuk aplikasi Anda, +lihat dokumentasi File AndroidManifest.xml.

+ + + +

Mendeklarasikan kemampuan komponen

+ +

Seperti telah dibahas di atas, dalam Mengaktifkan Komponen, Anda bisa menggunakan +{@link android.content.Intent} untuk memulai aktivitas, layanan, dan penerima siaran. Anda bisa +melakukannya dengan menamai komponen sasaran secara eksplisit (menggunakan nama kelas komponen) dalam intent. Akan tetapi, +kemampuan intent sebenarnya ada pada konsep intent implisit. Intent implisit +cuma menjelaskan tipe tindakan yang akan dilakukan (dan, secara opsional, data tempat Anda ingin +melakukan tindakan) dan memungkinkan sistem untuk menemukan komponen pada perangkat yang bisa melakukan +tindakan tersebut dan memulainya. Jika ada banyak komponen yang bisa melakukan tindakan yang dijelaskan oleh intent, +maka pengguna bisa memilih komponen yang akan digunakan.

+ +

Cara sistem mengidentifikasi komponen yang bisa merespons intent adalah dengan membandingkan +intent yang diterima dengan filter intent yang disediakan dalam file manifes aplikasi lainnya pada +perangkat.

+ +

Bila mendeklarasikan aktivitas dalam manifes aplikasi, secara opsional Anda bisa menyertakan +filter intent yang mendeklarasikan kemampuan aktivitas agar bisa merespons intent dari +aplikasi lain. Anda bisa mendeklarasikan filter intent untuk komponen dengan +menambahkan elemen {@code +<intent-filter>} sebagai anak elemen deklarasi komponen.

+ +

Misalnya, jika Anda telah membangun aplikasi email dengan aktivitas untuk menulis email baru, Anda bisa +mendeklarasikan filter intent untuk merespons intent "kirim" (untuk mengirim email baru) seperti ini:

+
+<manifest ... >
+    ...
+    <application ... >
+        <activity android:name="com.example.project.ComposeEmailActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.SEND" />
+                <data android:type="*/*" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
+
+ +

Kemudian, jika aplikasi lain membuat intent dengan tindakan {@link +android.content.Intent#ACTION_SEND} dan meneruskannya ke {@link android.app.Activity#startActivity +startActivity()}, sistem bisa memulai aktivitas Anda agar pengguna bisa menulis draf dan mengirim +email.

+ +

Untuk informasi selengkapnya tentang membuat filter intent, lihat dokumen Intent dan Filter Intent. +

+ + + +

Mendeklarasikan kebutuhan aplikasi

+ +

Ada berbagai macam perangkat yang didukung oleh Android dan tidak +semuanya menyediakan fitur dan kemampuan yang sama. Agar aplikasi Anda tidak dihapus pada perangkat yang tidak memiliki +fitur yang diperlukan aplikasi, Anda harus jelas mendefinisikan profil mengenai +tipe perangkat yang didukung aplikasi dengan mendeklarasikan kebutuhan perangkat dan perangkat lunak dalam file +manifes. Kebanyakan deklarasi ini hanya bersifat informasi dan sistem tidak +membacanya, namun layanan eksternal seperti Google Play akan membacanya untuk menyediakan +penyaringan bagi pengguna saat mereka mencari aplikasi dari perangkat.

+ +

Misalnya, jika aplikasi memerlukan kamera dan menggunakan API yang disediakan dalam Android 2.1 (API Level 7) +, Anda harus mendeklarasikannya sebagai kebutuhan dalam file manifes seperti ini:

+ +
+<manifest ... >
+    <uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+</manifest>
+
+ +

Sekarang, perangkat yang tidak memiliki kamera dan menggunakan +Android versi lebih rendah dari 2.1 tidak bisa menginstal aplikasi Anda dari Google Play.

+ +

Akan tetapi, bisa juga mendeklarasikan bahwa aplikasi Anda menggunakan kamera, namun tidak +mengharuskannya. Dalam hal itu, aplikasi Anda harus mengatur atribut {@code required} + ke {@code "false"} dan memeriksa saat runtime apakah +perangkat memiliki kamera dan menonaktifkan setiap fitur kamera yang sesuai.

+ +

Informasi selengkapnya tentang cara mengelola kompatibilitas aplikasi dengan +perangkat yang berbeda disediakan dalam dokumen +Kompatibilitas Perangkat.

+ + + +

Sumber Daya Aplikasi

+ +

Aplikasi Android tidak hanya terdiri dari kode—Aplikasi memerlukan sumber daya yang +terpisah dari kode sumber, seperti gambar, file audio, dan apa saja yang berkaitan dengan +presentasi visual dari aplikasi. Misalnya, Anda harus mendefinisikan animasi, menu, gaya, warna, +dan layout antarmuka pengguna aktivitas dengan file XML. Penggunaan sumber daya aplikasi +mempermudah pembaruan berbagai karakteristik aplikasi Anda tanpa memodifikasi kode dan—dengan menyediakan +seperangkat sumber daya alternatif—memungkinkan Anda mengoptimalkan aplikasi untuk berbagai konfigurasi +perangkat berbeda (seperti bahasa dan ukuran layar yang berbeda).

+ +

Untuk setiap sumber daya yang Anda sertakan dalam proyek Android, alat bawaan SDK akan mendefinisikan ID integer +unik, yang bisa Anda gunakan untuk mengacu sumber daya dari kode aplikasi atau dari sumber daya lainnya yang +didefinisikan dalam XML. Misalnya, jika aplikasi berisi file gambar bernama {@code +logo.png} (disimpan dalam direktori {@code res/drawable/}), alat SDK akan menghasilkan ID sumber daya +bernama {@code R.drawable.logo}, yang bisa Anda gunakan untuk mengacu gambar dan memasukkannya dalam +antarmuka pengguna.

+ +

Salah satu aspek paling penting dari penyediaan sumber daya yang terpisah dari +kode sumber adalah kemampuan Anda menyediakan sumber daya alternatif untuk konfigurasi perangkat +yang berbeda. Misalnya, dengan mendefinisikan string UI dalam XML, Anda bisa menerjemahkan string ke dalam +bahasa lain dan menyimpan string itu dalam file terpisah. Kemudian, berdasarkan qualifier +bahasa yang ditambahkan ke nama direktori sumber daya (seperti {@code res/values-fr/} untuk nilai +string Prancis) dan pengaturan bahasa pengguna, sistem Android akan menerapkan string bahasa yang sesuai +untuk UI Anda.

+ +

Android mendukung banyak qualifier berbeda untuk sumber daya alternatif Anda. Qualifier +adalah string pendek yang Anda sertakan dalam nama direktori sumber +daya untuk mendefinisikan konfigurasi perangkat yang harus digunakan sumber daya tersebut. Contoh lainnya, +Anda harus sering membuat layout berbeda untuk aktivitas, bergantung pada +orientasi layar dan ukuran perangkat. Misalnya, saat layar perangkat dalam orientasi +tegak, Anda mungkin ingin layout tombolnya vertikal, tetapi saat layar dalam orientasi +mendatar, tombolnya harus sejajar horizontal. Untuk mengubah layout +sesuai orientasi, Anda bisa mendefinisikan dua layout berbeda dan menerapkan qualifier yang +tepat untuk setiap nama direktori layout. Kemudian, sistem secara otomatis menerapkan +layout yang tepat sesuai dengan orientasi perangkat saat ini.

+ +

Untuk informasi selengkapnya tentang berbagai jenis sumber daya yang bisa disertakan dalam aplikasi dan cara +membuat sumber daya alternatif untuk konfigurasi perangkat berbeda, bacalah Menyediakan Sumber Daya.

+ + + +
+
+

Teruskan membaca tentang:

+
+
Intent dan Filter Intent +
+
Informasi tentang cara menggunakan API {@link android.content.Intent} untuk + mengaktifkan komponen aplikasi, seperti aktivitas dan layanan, dan cara menyediakan komponen aplikasi + untuk digunakan oleh aplikasi lain.
+
Aktivitas
+
Informasi tentang cara membuat instance kelas {@link android.app.Activity}, +yang menyediakan layar tersendiri dalam aplikasi bersama antarmuka pengguna.
+
Menyediakan Sumber Daya
+
Informasi tentang cara aplikasi Android disusun untuk memisahkan sumber daya aplikasi dari +kode aplikasi, termasuk cara Anda bisa menyediakan sumber daya alternatif untuk +konfigurasi perangkat tertentu. +
+
+
+
+

Anda juga mungkin tertarik dengan:

+
+
Kompatibilitas Perangkat
+
Informasi tentang cara kerja Android pada berbagai tipe perangkat dan +pengenalan mengenai cara mengoptimalkan aplikasi untuk setiap perangkat atau membatasi ketersediaan aplikasi Anda untuk +perangkat berbeda.
+
Izin Sistem
+
Informasi tentang cara Android membatasi akses aplikasi pada API tertentu dengan sistem izin +yang mengharuskan persetujuan pengguna agar aplikasi dapat menggunakan API tersebut.
+
+
+
+ -- cgit v1.2.3