Tutorial Android Service

Layanan Android adalah komponen yang digunakan untuk melakukan operasi di latar belakang seperti memutar musik, menangani transaksi jaringan, berinteraksi penyedia konten dll. Ini tidak memiliki UI (antarmuka pengguna).

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.

Note! Layanan Android bukan thread atau proses terpisah.

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 :

Service Android


Berlangganan update artikel terbaru via email:

0 Response to "Tutorial Android Service"

Posting Komentar

Iklan Atas Artikel

Iklan Bawah Artikel