Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Android servisin uygulama kapandıktan sonra tekrar çalışmaması sorunu
#1
Exclamation 
Merhabalar,

Öncelikle forumdaki benzer her bir konuyu inceledim. Örnek projeleri implemente ettim. Bunların dışında gerek Stack Overflow, gerekse de Android Studio tarafındaki kod örneklerine baktım. Ancak bir türlü servisimin uygulama kapandıktan sonra çalışmaya devam etmesini sağlayamadım.

Temel olarak yaptığım ekstra hiç bir işlem yok.

Uygulama tarafında;

 FService := TLocalServiceConnection.create;
 FService.StartService('TestServisi');

olarak servisi ayağa kaldırıyorum ve sorunsuz kalkıyor. 

Servis tarafında da;

function TDM.AndroidServiceStartCommand(const Sender: TObject;
 const Intent: JIntent; Flags, StartId: Integer): Integer;
begin
 Result := TJService.JavaClass.START_STICKY;
end

ile servisimi oluşturuyorum. Hiç bir işlem talep etmiyorum. Ve Android tarafında çalışan hizmetlerden uygulamamı takip ediyorum. Uygulamam 1 Host app ve 1 hizmet olarak ayağa kalkıyor. Ancak ben uygulamamı kapattığımda;

Uygulama - Yeniden Başlatılıyor" olarak askıda kalıyor ve hiç bir şekilde çalışmıyor.

Manifest dosyası tarafında

<service android:exported="false" android:enabled="true" android:name="com.embarcadero.services.TestService" />

olarak servisimi belirtiyorum.

Denediğim Delphi sürümleri: 10.3 ve minor sürümleri ayrıca 10.4 ve 10.4.1. 

Çalıştırmayı denediğim Android sürümleri, Android 10 (Xiaomi note 9), Android 8.0 (Galaxy Tab A).

Sizlerden ricam, bana çalışan bir örnek sunabilir misiniz? Ya da nerede hata yaptığımı söyleyebilir misiniz? 
Elinde çalışan bir Background servis (Foreground değil) yapısı olan var ise paylaşabilir mi? 

Not: Android Studio ile aynı yapıyı kurduğumda sorunsuz olarak çalışıyor. Ancak müşterim Delphi Projesi talep ettiği için bu tarafı çözmem gerekiyor.

Şimdiden katkılarınız için çok teşekkür ederim.

İyi çalışmalar.
Cevapla
#2
@Syntax Merhaba uygulamanızın pil optimizasyonunu kapatmanız gerekmektedir.
https://www.delphican.com/showthread.php?tid=4700
Muharrem ARSLAN
WWW
Cevapla
#3
Cevap için teşekkürler. Sorun Receiver ile alakalı. Servisi Receiver ile tutturmak gerekiyormuş.
Cevapla
#4
(28-09-2020, Saat: 14:12)Syntax Adlı Kullanıcıdan Alıntı: Cevap için teşekkürler. Sorun Receiver ile alakalı. Servisi Receiver ile tutturmak gerekiyormuş.

Servis bu Receiver ile nasıl tutturuluyormuş?
Cevapla
#5
(28-09-2020, Saat: 14:55)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(28-09-2020, Saat: 14:12)Syntax Adlı Kullanıcıdan Alıntı: Cevap için teşekkürler. Sorun Receiver ile alakalı. Servisi Receiver ile tutturmak gerekiyormuş.

Servis bu Receiver ile nasıl tutturuluyormuş?

Merhaba, kusura bakmayın geç gördüm mesajı.

Aslında mantık başlangıçta otomatik çalıştırma ile ilgili. Android 10 da yeniden başlattığınız zaman servis sticky oluyor. 2 farklı cihazda deneme şansım oldu.

Şuradaki örneği kullandım. Sorunsuz çalışıyor.

KastriFree olarak erişebilirsiniz.

https://github.com/DelphiWorlds/KastriFr...rmLocation
Cevapla
#6
Başardığınız örneği veya mümkünse basit bir örnek paylaşabilir misin ben hala başaramadım. Örnekleri denedim Uygula kapatıldıktan sonra serviste kapatılıyor.
Cevapla
#7
Bir çok örneği denedim, ama hala arka planda sürekli çalışan bir servis uygulaması başaramadım. Servisin neden durduğunu (pil optimizasyonu, ram optimizasyonu vb. ) gözlemleyerek anlayamadım ki çözümü ona göre arayayım. Bu konu sır gibi saklanıp kısıtlı bilgi paylaşıldığı sürecede zor anlarım gibi geliyor Smile
Cevapla
#8
Oratada bir sir oldugunu sanmiyorum. GPS tracker orneklerine bakin isterseniz. Zaten kodlar decompile edilebiliyor, neler yaptiklarina bakabilirsiniz. Andorid surekli aktif olan uygulama istemiyor. Eger kullanici ile etkilesime girecekseniz push notification kullanmanizi bekliyor.
Cevapla
#9
Onları inceledim. Eski versiyon androidlerde çalışıyor. Yeni çıkan kısıtlamalarda malesef çalışmadı. Bu konuda yeni olduğum için ben yapamamışta olabilirim. Üstadım, Asıl niyetim servislerin bir kaç çeşidi var. Broadcast, , intent ve bir kaç tane daha. Bunları delphide nasıl kullanıyoruz, nasıl çalışıyor bunları öğrenmek istiyorum. Android studio tarafında bir çok anlatımı var fakat delphi de standart servis haricinde bir  anlatım bulamadım. Örneğin Delphi broadcast örneğini araştırırsanız türkçe olarak ele alan hiç bir anlatım yok. Eski yapıda çalışan güncel olmayan iki kod parçası örneği var.
Cevapla
#10
Bu sorun Delphi'ye ozgu degil. Cross platform compile yapan tum cozumlerde ayni sorun var. Oncelikle sunu kabul etmek gerek: Delphi gibi cross platform cozumler native uygulama yerine gecmez her senaryoda. Elinizdeki aracin sinirlarini bilerek projelerde kullanan. Eger yeterli degilse baska bir dil kullanin.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android Rehbere Kayıt Ekleme barissagir 6 304 04-04-2024, Saat: 09:36
Son Yorum: RAD Coder
  Android’de Dosya Depolama ve Paylaşma-2: And 11 SDK 30 Scoped Storage SAF MediaStore emozgun 12 4.914 19-03-2024, Saat: 22:29
Son Yorum: nguzeller
  Google play Uygulama yükleme hatası [Çözüldü] codder71 3 366 23-02-2024, Saat: 22:42
Son Yorum: codder71
  Android 33 api sdk güncelleme [ÇÖZÜLDÜ] codder71 4 439 19-02-2024, Saat: 22:38
Son Yorum: codder71
  Delphi 12 IOS Simulatorde Uygulama Çalışmıyor elixir84 3 964 07-02-2024, Saat: 17:05
Son Yorum: elixir84



Konuyu Okuyanlar: 1 Ziyaretçi