Tutorial Android Service
Layanan berjalan di latar belakang tanpa batas bahkan jika aplikasi hancur.
Selain itu, layanan dapat dibatasi oleh komponen untuk melakukan interaktivitas dan inter process communication (IPC).
Android.app.Service adalah subkelas kelas ContextWrapper.
Siklus Hidup Layanan Android
Ada dua bentuk layanan. Siklus hidup layanan dapat mengikuti dua jalur yang berbeda : Started (Started) atau Bound (Bound).
- Started
- Bound
1. Memulai Layanan
Layanan dimulai ketika komponen (seperti aktivitas) memanggil metode startService(), sekarang berjalan di latar belakang tanpa batas. Hal ini dihentikan oleh metode stopService(). Layanan ini dapat menghentikan dirinya sendiri dengan memanggil metode stopSelf().
2. Layanan Terikat
Layanan terikat ketika komponen lain (misalnya klien) memanggil metode bindService(). Klien dapat melepaskan layanan dengan memanggil metode unbindService().Layanan tidak dapat dihentikan sampai semua klien melepaskan layanan.
Memahami Layanan Dimulai dan Terikat dengan contoh musik latar belakang
Misalkan, saya ingin memutar musik di latar belakang, jadi panggil metode startService(). Tapi saya ingin mendapatkan informasi dari lagu saat ini sedang dimainkan, saya akan mengikat layanan yang memberikan informasi tentang lagu saat ini.
Contoh Layanan Android
Mari kita lihat contoh layanan di android yang memainkan audio di latar belakang. Audio tidak akan dihentikan bahkan jika Anda beralih ke aktivitas lain. Untuk menghentikan audio, Anda harus menghentikan layanan.
* Main Activity
Tarik 3 tombol dari pallete, sekarang activity_main.xml akan terlihat seperti ini :File : activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="example.android.com.androidservice.MainActivity"> <Button android:id="@+id/buttonStart" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="74dp" android:text="Start Service" /> <Button android:id="@+id/buttonStop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Stop Service" /> <Button android:id="@+id/buttonNext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="63dp" android:text="Next Page" /> </RelativeLayout>
Ini adalah file layout aktivitas berikutnya.
Ini berisi hanya satu textview menampilkan pesan Halaman Berikutnya.
File : activity_next.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="example.android.com.androidservice.NextPage"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="200dp" android:text="Next Page" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
* Activity class
Sekarang buat kelas implemenation layanan dengan mewarisi kelas Service dan overridding metode callback-nya.File : MyService.java
package example.android.com.androidservice; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.IBinder; import android.support.annotation.Nullable; import android.widget.Toast; public class MyService extends Service { MediaPlayer myPlayer; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show(); myPlayer = MediaPlayer.create(this, R.raw.sun); myPlayer.setLooping(false); // Set looping } @Override public void onStart(Intent intent, int startid) { Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); myPlayer.start(); } @Override public void onDestroy() { Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show(); myPlayer.stop(); } }
Sekarang buat kelas MainActivity untuk melakukan penanganan peristiwa. Di sini, kami menulis kode untuk memulai dan menghentikan layanan. Selain itu, memanggil aktivitas kedua pada buttonNext.
* Activity class
File : MainActivity.java
package example.android.com.androidservice; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ Button buttonStart, buttonStop,buttonNext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonStart = findViewById(R.id.buttonStart); buttonStop = findViewById(R.id.buttonStop); buttonNext = findViewById(R.id.buttonNext); buttonStart.setOnClickListener(this); buttonStop.setOnClickListener(this); buttonNext.setOnClickListener(this); } public void onClick(View src) { switch (src.getId()) { case R.id.buttonStart: startService(new Intent(this, MyService.class)); break; case R.id.buttonStop: stopService(new Intent(this, MyService.class)); break; case R.id.buttonNext: Intent intent=new Intent(this,NextPage.class); startActivity(intent); break; } } }
Sekarang, buat aktivitas lain.
File : NextPage.java
package example.android.com.androidservice; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class NextPage extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_next); } }
Menyatakan atau mendeklarasikan Layanan dalam file AndroidManifest.xml
Terakhir, menyatakan layanan dalam berkas manifes.Mari kita lihat file AndroidManifest.xml lengkap.
File : AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="example.android.com.androidservice"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NextPage"></activity> <service android:name=".MyService" android:enabled="true" /> </application> </manifest>
Output :
0 Response to "Tutorial Android Service"
Posting Komentar