Layanan adalah komponen yang berjalan di latar belakang untuk melakukan operasi lama berjalan tanpa perlu berinteraksi dengan pengguna dan bekerja bahkan jika aplikasi hancur. Layanan A dasarnya dapat mengambil dua negara.
State | Description |
---|---|
Started | Sebuah layanan dimulai ketika komponen aplikasi, seperti kegiatan, dimulai dengan memanggil startService (). Setelah dimulai, layanan dapat berjalan di latar belakang tanpa batas, bahkan jika komponen yang memulai hancur. |
Bound | Sebuah layanan terikat ketika komponen aplikasi mengikat itu dengan memanggil bindService (). Sebuah layanan terikat menawarkan antarmuka client-server yang memungkinkan komponen untuk berinteraksi dengan layanan, mengirim permintaan, mendapatkan hasil, dan bahkan melakukannya di proses dengan komunikasi interprocess (IPC). |
Layanan A memiliki metode callback siklus hidup yang dapat Anda menerapkan untuk memantau perubahan di negara bagian layanan dan Anda dapat melakukan pekerjaan pada tahap yang sesuai. Diagram di sebelah kiri menunjukkan siklus hidup ketika layanan ini dibuat dengan startService () dan diagram di sebelah kanan menunjukkan siklus hidup ketika layanan ini dibuat dengan bindService (): (image courtesy: android.com)
Untuk membuat layanan, Anda membuat kelas Java yang memperluas layanan dasar kelas atau salah satu subclass yang ada. Kelas dasar Layanan mendefinisikan berbagai metode callback dan yang paling penting diberikan di bawah ini. Anda tidak perlu untuk mengimplementasikan semua metode callback. Namun, penting bahwa Anda memahami masing-masing dan menerapkan mereka yang memastikan aplikasi Anda berperilaku dengan cara yang pengguna harapkan.
Callback | Description |
---|---|
onStartCommand() | Sistem panggilan metode ini ketika komponen lain, seperti kegiatan, meminta bahwa layanan dimulai, dengan callingstartService (). Jika Anda menerapkan metode ini, adalah tanggung jawab Anda untuk menghentikan layanan ketika pekerjaan dilakukan, dengan memanggil stopSelf () atau stopService () metode. |
onBind() | Sistem panggilan metode ini ketika komponen lain ingin mengikat dengan layanan dengan memanggil bindService (). Jika Anda menerapkan metode ini, Anda harus menyediakan sebuah antarmuka yang klien gunakan untuk berkomunikasi dengan layanan, dengan mengembalikan sebuah objek IBinder. Anda harus selalu menerapkan metode ini, tetapi jika Anda tidak ingin mengizinkan mengikat, maka Anda harus kembali nol. |
onUnbind() | Sistem panggilan metode ini ketika semua klien telah terputus dari antarmuka tertentu yang diterbitkan oleh layanan. |
onRebind() | Sistem panggilan metode ini ketika klien baru telah tersambung ke layanan, setelah sebelumnya telah diberitahu bahwa semua telah terputus di onUnbind nya (Intent). |
onCreate() | Sistem panggilan metode ini ketika layanan ini pertama dibuat menggunakan onStartCommand () atau onBind (). Panggilan ini diperlukan untuk melakukan satu kali set-up. |
onDestroy() | Sistem panggilan metode ini ketika layanan tidak lagi digunakan dan sedang hancur. Layanan Anda harus menerapkan ini untuk membersihkan sumber daya seperti benang, pendengar terdaftar, penerima, dll |
Berikut layanan kerangka menunjukkan masing-masing metode siklus hidup -
package com.tutorialspoint; import android.app.Service; import android.os.IBinder; import android.content.Intent; import android.os.Bundle; public class HelloService extends Service { /** indicates how to behave if the service is killed */ int mStartMode; /** interface for clients that bind */ IBinder mBinder; /** indicates whether onRebind should be used */ boolean mAllowRebind; /** Called when the service is being created. */ @Override public void onCreate() { } /** The service is starting, due to a call to startService() */ @Override public int onStartCommand(Intent intent, int flags, int startId) { return mStartMode; } /** A client is binding to the service with bindService() */ @Override public IBinder onBind(Intent intent) { return mBinder; } /** Called when all clients have unbound with unbindService() */ @Override public boolean onUnbind(Intent intent) { return mAllowRebind; } /** Called when a client is binding to the service with bindService()*/ @Override public void onRebind(Intent intent) { } /** Called when The service is no longer used and is being destroyed */ @Override public void onDestroy() { } }
Example
Contoh ini akan membawa Anda melalui langkah-langkah sederhana untuk menunjukkan bagaimana untuk membuat Layanan Android Anda sendiri. Ikuti langkah-langkah berikut untuk mengubah aplikasi Android kita buat di Hello World Contoh bab:
Step | Description |
---|---|
1 | Anda akan menggunakan Android StudioIDE untuk membuat aplikasi Android dan nama itu sebagai Application saya berdasarkan paket com.example.My Aplikasi seperti yang dijelaskan dalam bab Hello World Contoh. |
2 | Memodifikasi file utama kegiatan MainActivity.java menambahkan startService () andstopService () metode. |
3 | Membuat file java MyService.java baru di bawah paket com.example.My Aplikasi. File ini akan memiliki implementasi metode layanan terkait Android. |
4 | Mendefinisikan layanan Anda di AndroidManifest.xml file menggunakan <layanan ... /> tag. Sebuah aplikasi dapat memiliki satu atau lebih layanan tanpa batasan. |
5 | Memodifikasi konten default res file layout / / activity_main.xml untuk menyertakan dua tombol di tata letak linear. |
6 | Tidak perlu mengubah konstanta di res / nilai berkas / strings.xml. Android perawatan studio take dari nilai string. |
7 | Jalankan aplikasi untuk meluncurkan Android emulator dan memverifikasi hasil dari perubahan yang dilakukan dalam aplikasi. |
Berikut ini adalah isi dari dimodifikasi kegiatan utama filesrc / com.example.My Aplikasi / MainActivity.java. File ini dapat mencakup setiap metode siklus hidup yang mendasar. Kami telah menambahkan startService () andstopService () metode untuk memulai dan menghentikan layanan.
package com.example.My Application; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.content.Intent; import android.view.View; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } // Method to start the service public void startService(View view) { startService(new Intent(getBaseContext(), MyService.class)); } // Method to stop the service public void stopService(View view) { stopService(new Intent(getBaseContext(), MyService.class)); } }
Berikut ini adalah isi dari src / com.example.My Aplikasi / MyService.java. File ini dapat memiliki implementasi dari satu atau lebih metode terkait dengan Layanan berdasarkan kebutuhan. Untuk saat ini kita akan menerapkan hanya dua metode onStartCommand () dan onDestroy () -
package com.example.My Application; 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) { // Let it continue running until it is stopped. 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(); } }
Berikut akan kandungan modifikasi dari AndroidManifest.xml berkas. Di sini kita telah menambahkan <layanan ... /> tag untuk menyertakan layanan kami:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.MyApplication" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="13" android:targetSdkVersion="22" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <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>
Berikut akan menjadi isi dari res file layout / / activity_main.xml untuk menyertakan dua tombol:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Example of services" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point " android:textColor="#ff87ff09" android:textSize="30dp" android:layout_above="@+id/imageButton" android:layout_centerHorizontal="true" android:layout_marginBottom="40dp" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/abc" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="Start Services" android:onClick="startService" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Stop Services" android:id="@+id/button" android:onClick="stopService" android:layout_below="@+id/button2" android:layout_alignLeft="@+id/button2" android:layout_alignStart="@+id/button2" android:layout_alignRight="@+id/button2" android:layout_alignEnd="@+id/button2" /> </RelativeLayout>
Berikut akan menjadi isi dari res / values / strings.xml untuk mendefinisikan dua konstanta baru:
<resources> <string name="app_name">My Application</string> <string name="menu_settings">Settings</string> <string name="title_activity_main">MainActivity</string> </resources>
Mari kita coba untuk menjalankan Hello kami dimodifikasi Dunia! aplikasi kita hanya dimodifikasi. Saya berasumsi bahwa Anda telah menciptakan AVD Anda saat melakukan pengaturan lingkungan. Untuk menjalankan aplikasi dari Android studio, buka salah satu file kegiatan proyek Anda dan klik Run
ikon dari tool bar. Android Studio menginstal aplikasi pada AVD Anda dan mulai itu dan jika semuanya baik-baik saja dengan Anda set-up dan aplikasi, maka akan muncul jendela berikut Emulator -
ikon dari tool bar. Android Studio menginstal aplikasi pada AVD Anda dan mulai itu dan jika semuanya baik-baik saja dengan Anda set-up dan aplikasi, maka akan muncul jendela berikut Emulator -
Sekarang untuk memulai layanan Anda, mari kita klik pada tombol Layanan Start, ini akan memulai layanan dan per program kami di onStartCommand () metode, messageService Dimulai akan muncul di bagian bawah simulator sebagai berikut -
Untuk menghentikan layanan, Anda dapat mengklik tombol Stop Service.
Next >>> Android - Broadcast Receivers
Next >>> Android - Broadcast Receivers
Sumber:
www.tutorialspoint.com
Tidak ada komentar:
Posting Komentar