Sadece aktifken çalışan Android uygulamarı yerine telefonunuzda arka planda sürekli olarak çalışan bir Android uygulaması geliştirmek istiyorsanız, yapmanız gereken bir servis eklemektir. Servis (service) eklemek ise hiç de göründüğü kadar zor olmayan bir işlemdir ve birkaç düzenleme ile kolayca yapılabilir.
Örnek olarak kodlamış ve halihazırda kullanmakta olduğunuz bir uygulamanın arka planda çalışması için eklemeniz gerken kodlar şu şelilde:
Android Studio'da Servis eklemek ve arka planda çalışan bir uygulama geliştirmek
Adım 1: Tasarım
Bu uygulamayı olabildiğince göz korkutmayacak şekilde sunabilmem için gereksiz kod kalabalıklarının olmamasını tercih ettim. Bu yüzden tasarım konusunu bu uygulamanın dışında tutuyoum. res/layout/activity_main.xml dosyasında uygulamanızın tasarımını geliştirebilirsiniz.
Adım 2: Servis sınıfı
Uygulamanıza servis.js adında bir java class'ı ekleyin ve aşağıdaki kodlarla güncelleyin:
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
public class servis extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service başlatıldı", Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service sonlandırıldı", Toast.LENGTH_LONG).show();
}
}
Adım 3: manifest.xml
manifest.xml dosyasını açın ve application node'u içine aşağıdaki satırı ekleyin.
<service android:name = ".servis"/>
Adım 4: MainActivity
Son adım olarak MainActivity içerisinde servisi başlatmamız gerekiyor. Bu işlemi bir butonun tıklanması ile başlatıp sonlandıracak şekilde de düzenleyebilirsiniz, ya da onCreate metodu altında doğrudan başlatıp hiç sonlandırmadan kullanmak isterseniz aşağıdaki kodu eklemelisiniz.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
startService(new Intent(MainActivity.this,service.class));
...
}