Вот полу-другой способ сохранить сервис навсегда.Есть способы убить его в коде, если вы хотите
Фоновая служба:
package com.ex.ample;
import android.app.Service;
import android.content.*;
import android.os.*;
import android.widget.Toast;
public class BackgroundService extends Service {
public Context context = this;
public Handler handler = null;
public static Runnable runnable = null;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "Service created!", Toast.LENGTH_LONG).show();
handler = new Handler();
runnable = new Runnable() {
public void run() {
Toast.makeText(context, "Service is still running", Toast.LENGTH_LONG).show();
handler.postDelayed(runnable, 10000);
}
};
handler.postDelayed(runnable, 15000);
}
@Override
public void onDestroy() {
/* IF YOU WANT THIS SERVICE KILLED WITH THE APP THEN UNCOMMENT THE FOLLOWING LINE */
//handler.removeCallbacks(runnable);
Toast.makeText(this, "Service stopped", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show();
}
}
Вот как вы начинаете это с вашей основной деятельности или с того места, где вы хотите:
startService(new Intent(this, BackgroundService.class));
onDestroy()
будет вызвано, когда приложение будет закрыто или уничтожено, но исполняемый файл просто запускает его обратно.Вам также необходимо удалить обратные вызовы обработчиков.
Я надеюсь, что это кому-то поможет.
Причина, по которой некоторые люди делают это, связана с корпоративными приложениями, где в некоторых случаях пользователи / сотрудники должныне сможет остановить определенные вещи:)
http://i.imgur.com/1vCnYJW.png