Android uygulaması sürekli arka planda nasıl çalıştırılır??

Merhabalar. Geliştirmekte olduğum android uygulamasının sürekli arka planda çalışmasını istiyorum.

Service kullanımını denedim ancak arka planda uygulama kapatılınca serviste sonlanıyor ve google, service kullanımını bataryayı çok tüketmesi açısından önermiyor burada nasıl bir yol izleyebilirim?

Yapmak istediğim şey veri tabanında belirli bir alanın değişmesiyle bir metodun çalıştırması ve verisini tekrar veri tabanına göndermesini amaçlıyorum. Veri tabanı olarak firebase database kullanıyorum.

G
0 kişi takip ediyor.
Misafir olarak yayınla
11
11 CEVAP

yazılım bilgim az ancak şuna ne dersin. Uygulama içinde bir şarta bağlı tetikleme veya süre bazlı bir tetikleme ile yada başka bir etken ile başlayacak bir yapı hazırlayabilirsin. Böylece fazladan servisle uğramamış olursun. Kendi işini kendin yap mantığı bahsettiğim. Eksiğim varsa düzeltin arkadaşlar

Ş

Sorun bu tetiklemeyi yapamıyor olmamda çünkü uygulama arka planda çalışmadığı için zaman bağlı bir tetikleme yapma imkanım olmuyor. Eğer biliyorsanız firebase notifications var ve uygulama arka planda kapalı olsa bile bildirim gönderdiğinizde cihazlara bildirim gidiyor benimde böyle bir yapıya ihtiyacım var uygulama arka planda kapalı olsa bile veri değişince tetiklenmesi gerekiyor, ya da arka planda uygulamayı sürekli çalıştıracak bir yönteme.

Gökhan Özlük 5 yıl

servis kullanmadan uygulama kendi kendine çalışamıyor mu? Mesela basit bir alarm ile bu yapılabiliyor

Şerif Çalıbaş 5 yıl

Uygulamadan geri tuşuyla ya da home tuşuyla çıkınca uygulama tamamen kapatılmıyor bu durumda çalışıyor ancak açık olan uygulamaların olduğu kısımdan sürükleme hareketi ya da her hangi bir ram temizleme aracıyla kapatıldığında uygulama tamamen kapanmış oluyor yani artık çalışmadığı için tetikleme yapamıyorum. Dediğiniz gibi basit bir alarm bile bunu yapabiliyor ancak orada nasıl bir yol izliyorlar onu bilmiyorum.

Gökhan Özlük 5 yıl

Senin istedigin partial wake lock. PowerManager mgr = (PowerManager)context. GetSystemService(Context. POWER_SERVICE); WakeLock wakeLock = mgr. NewWakeLock(PowerManager. PARTIAL_WAKE_LOCK, "MyWakeLock"); wakeLock. Acquire();
Cpu her zaman uyanik tutar. Ekran kapansa bile. #

E

https://stackoverflow.com/questions/5286947/wake-locks-android-service-recurring

E

Teşekkürler deneyeceğim. Peki sizce service kullanımı doğru bir yaklaşım mı batarya yönünden?

Gökhan Özlük 5 yıl

Yaptiginiz isleme bagli. Database kontrolu timer veya kullanici arayuzu ile alakali ekstra islemlerin ayri ayri etkileri var. Isletim sisteminin batarya kontrol bitimi bunun hakkinda size daha detayli bilgi verirr. Ama islemciyi veya interneti kullanmayan bir servis batarya dostudur da diyemeyiz. Dediginiz gibi telefona alarm kurdugunuz zaman da servis calisiiyor.

Emre Savas 5 yıl

Emre Savas Hocam banada yardımcı olabilirmisiniz

B

Sorunu okudum ama anlamadim .

Emre Savas 5 yıl

Hocam sorun bir butona Üç seçenek vereceğim yapamadım Örnek fotoğraf atıyorum

com-b3utay5sn1q02zzygyn8.jpg

Bilal Aktayca 5 yıl

firebase cloud function #

A

Cloud functions daha önce kullanmıştım ancak bu durumda nasıl kullanacağımı anlamadım.

Gökhan Özlük 5 yıl

veritabanındaki olusan degisikligi anlayip uygulamaya bildirim gönderebilirsin.

Ahmed Halime 5 yıl

Anahtar kelime ya da link verebilir misiniz araştırmam için

Gökhan Özlük 5 yıl

https://blog.chizobaogbonna.me/device-to-device-push-notification-using-cloud-functions-for-firebase-5e607d74d7a2

Ahmed Halime 5 yıl

turkce anlatimida vardi linki bulamadim

Ahmed Halime 5 yıl

Oluşturduğunuz servisi sticky Mode olarak yazarsanız uygulama kapansa da servis çalışmaya devam eder

G

public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } Dediğiniz gibi sticky modda ancak yine de kapanıyor.

Gökhan Özlük 5 yıl

Hocam verdiğiniz kodları ekledim ve mainactivity den çağırmak için
Intent intent = new Intent(this, ServiceStarter. Class);
sendBroadcast(intent);
bu kodu yazdım burada hata mı var acaba olmadı da.

G

Sadece şunu değiştir
Onreceive nin içini

Intent i = new intent(context, süreklicalismasiniisteğinservis. Class);
Context. Startservice(i);

Diğer her yeri aynı kalsın

R

Main aktivitiden çağırma
Zaten burası otomatik cagiralacak sen sadece onreceive nin içini dediğim gibi yap

R

Dediğiniz gibi yaptım ancak olmuyor hocam teşekkürler.

G

Servisi başlattığınız activityde onDestroy komutuna stopService dediyseniz ondan dolayı kapatılıyordur. Ya da servis içerisine AsyncTask kullandıysanız stopSelf yazdıysanız kapatır diğer hallerde bağımlı değildir. Kapatılmaması gerekir. Tabi kullandığınız Started Service ise.

Bir de şu linkteki timerı kullanın stopService veya stopSelf olmadan

https://stackoverflow.com/questions/32259349/run-volley-request-every-5-minutes-in-background-android

G