برای اینکه سرویس شما با خروج از برنامه هم شناسایی بشه و باقی بمونه، ابتدا باید سرویس موردنظر خودتون رو توی مانیفست معرفی کنید (داخل تگ Application) :
<service android:name=".MyService" />
الان ما یک سرویس معرفی کردیم که توی پکیج اصلی خود برنامه معرفی شده. بنابراین باید یک کلاس بهنام MyService.java توی پکیج اصلی برنامه بسازیم و از کلاس Service (یا یکی از فرزندانش) مشتق کنیم و کارهای لازم رو اونجا انجام بدیم:
public class MyService extends Service {
public static boolean enabled = true;
public static int interval = 3600;
@Override
public void onCreate() {
super.onCreate();
if (enabled) {
new Thread(new Runnable() {
@Override
public void run() {
try {
while (enabled) {
// do whatever you want here
Thread.sleep(interval * 1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
@Override
public void onDestroy() {
super.onDestroy();
enabled = false;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
حالا یه کلاس App.java توی پکیج اصلی برنامه بسازین با این کد:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Intent intent = new Intent(getApplicationConext(), MyService.class);
startService(intent);
}
}
و این کلاس رو توی مانیفست با خاصیت name تگ application معرفی کنید:
<application
android:name=".App"
... >
...
</application>
با تنظیم مقادیر interval و enabled سرویس میتونین بازهی زمانی تکرار و فعال یا غیرفعالبودنش رو کنترل کنین.