android, java

Android – Membuat Android Service

Android service adalah sebuah aplikasi android yang berjalan di background tanpa interaksi dengan pengguna. Jadi service ini ideal untuk situasi dimana tidak memerleukan tampilan User Interface kepada pengguna. Sebagai contoh yaitu aplikasi yang merekam geo koordinat di belakang layar.

Artikel ini adalah bagian dari artikel pembahasan Android Service di bitbagi, yaitu :

  1. Android – Membuat Android Service
  2. Android – Android Service untuk Melakukan Tugas Jangka Panjang (Lama)
  3. Android – Android Service untuk Melakukan Tugas yang Berulang
  4. Android – Menjalakan Asynchronous Tasks pada Threads Terpisah dengan IntentService
  5. Komunikasi antara Service dan Activity
  6. Binding Activity dengan Service
  7. Android Thread

Menggunakan Android Studio, berikut langkah-langkahnya :

  1. Buat proyek android baru (misal bernama Services).
  2. Buat klas Java baru (misal MyService.java) dengan kode berikut :
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;

public class MyService extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // We want this service to continue running until it is explicitly
        // stopped, so return sticky.
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
    }

}

3. pada file AndroidManifest.xml, tambahkan kode berikut (ganti nama paketnya “com.jfdimarzio” sesuai nama paket aplikasi kamu)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jfdimarzio.services">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        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>
        <service android:name=".MyService" />
    </application>

</manifest>

4. untuk file main.xml, tambahkan kode berikut (ganti nama paketnya “com.jfdimarzio” sesuai nama paket aplikasi kamu)

<?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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jfdimarzio.services.MainActivity">

    <Button
        android:text="Start Service"
        android:layout_width="90dp"
        android:layout_height="50dp"
        android:id="@+id/btnStartService"
        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        app:layout_constraintTop_toTopOf="@+id/activity_main"
        android:layout_marginTop="16dp"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        app:layout_constraintBottom_toTopOf="@+id/btnStopService"
        android:layout_marginBottom="8dp"
        android:onClick="startService" />

    <Button
        android:text="Stop Service"
        android:layout_width="88dp"
        android:layout_height="48dp"
        android:id="@+id/btnStopService"
        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        android:layout_marginStart="16dp"
        app:layout_constraintTop_toTopOf="@+id/activity_main"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        android:layout_marginEnd="16dp"
        app:layout_constraintBottom_toBottomOf="@+id/activity_main"
        android:onClick="stopService" />

</android.support.constraint.ConstraintLayout>

5. dan untuk file MainActivity.java, tambahkan kode berikut ini

package net.learn2develop.Services;
import android.support.v7.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void startService(View view) {
        startService(new Intent(getBaseContext(), MyService.class));
    }

    public void stopService(View view) {
        stopService(new Intent(getBaseContext(), MyService.class));
    }

}

Dan berikut adalah screenshootnya

Pada langkah-langkah di atas hanya mendemonstrasikan service yang sederhana yang bisa teman bitbagi buat. Di sini service-nya tidak memiliki fungsi yang berguna, hanya mengilustrasikan bagaimana kita bisa membuat sebuah service. Berikut adalah sedikit penjelasan mengenai koding di atas :

Setiap services extend dari Services klas public class MyService extends Service {}

Method onBind() untuk memungkinkan kita melakukan bind suatu activity ke suatu service, sehingga dari activity kita bisa langsung mengakses member atau mothod di dalam suatu service, untuk contoh koding di atas hanya memberikan return null, penggunaan fungsi ini akan dibahas pada artikel berikutnya.

Pada method onStartCommand() akan dipanggil ketika service dijalankan secara eksplisit menggunkan startService(). Di sini kita bisa menuliskan koding untuk melakukan sesuatu pada service kita. Pada contoh koding di atas kita return sebuah konstan START_STICKY sehingga service akan berlanjut jalan sampai dihentikan secara eksplisit.

Method onDestroy() dijalankan ketika service dihentikan menggunakan stopService(). Di sini adalah tempat kita membersihkan sumber daya yang digunakan oleh service yang kita buat.

Setiap service yang kita buat harus dideklarasikan di file AndroidManifest.xml, seperti :

<service android:name=".MyService" />

Jika kita menginginkan service yang kita buat bisa diakses oleh aplikasi lain, kita bisa menambahkan intent filter, seperti berikut :

<service android:name=".MyService">
    <intent-filter>
        <action android:name="net.learn2develop.MyService" />
    </intent-filter>
</service>

Untuk menjalankan service, kita menggunakan methos startService(), seperti :

startService(new Intent(getBaseContext(), MyService.class));

Jika teman bitbagi ingin menjalankan service tersebut dari aplikasi eksternal, maka :

startService(new Intent("net.learn2develop.MyService"));

Untuk menghentikan service, kita menggunakan method stopService(), seperti :

stopService(new Intent(getBaseContext(), MyService.class));

Bersambung ke pembahasan lebih mendalam mengenai android service di artikel-atikel selanjutnya. Thx.

Yuk berbagi di bitbagi.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.