folder Tahribat.com Forumları
linefolder Android - IOS Programlama
linefolder Android Servis Çalıştırma



Android Servis Çalıştırma

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Merhaba mürit ve mürideler,

     

    Android de bir servisim vardı bu servis de webSocket çalışıyor. Android 8.0 dan sonra arkaplan servislerini çalıştırmamaya başlamış ne saçma bir durum oldu bu benim için anlatamam.

    Bir Adet webSocket'im var bu socketten sürekli ver akışı oluyor.

     

    Bir Adet BroadCast Reciever ile Telefon boot edildiğinde Servisi çalıştırıyorum. Fakat servis kendi kendine kapanıyor durduk yere. Ne yaptım ne ettim olmadı. Bir tane JobScheduler yazdım her 5 saniyede bir servisi kontrol edip başlatıyorum. Bu sefer de ben başlatıyorum OS kapatıyor ben başlatıyorum **mk Işletim sistemi kapatıyor lanet olsun ya kafayı yemek üzereyim. Arka planda sürekli çalışan bir servis yaratmak istiyorum bir türlü beceremedim... Şu ***mk Whatsapp'ı Instagram'ı vs. nasıl yapıyor bu işi ? Bu **mk evlatları bu uygulamayı yazıyorsa bende yazmak istiyorum.. Arka planda servis yazmam gerekiyor olmazsa olmaz şuan. Yardım edebilecek var mı ???

     

     

    Örnek kodlarım şu şekilde.

     

    GCMServiceTask kodları ;

     

    public class BestTimeService extends GcmTaskService {
    
        private static final String TAG = "Deneme-App";
    
        private boolean isMyServiceRunning(Class<?> serviceClass) {
            ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
                if (serviceClass.getName().equals(service.service.getClassName())) {
                    return true;
                }
            }
            return false;
        }
        @Override
        public int onRunTask(TaskParams taskParams) {
    
            Context context=getApplicationContext();
    
            if(!isMyServiceRunning(DenemeService.class))
            {
    
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    context.startForegroundService(new Intent(context,DenemeService.class));
                }else{
                    context.startService(new Intent(context,DenemeService.class));
                }
            }
    
            Log.i(TAG, "onRunTask");
            switch (taskParams.getTag()) {
                case "checkService":
                    Log.i(TAG, "checkService");
    
                    // This is where you need to perform the background tasks.
    
                    return GcmNetworkManager.RESULT_SUCCESS;
                default:
                    Log.i(TAG, "FAILURE checkService");
                    return GcmNetworkManager.RESULT_FAILURE;
            }
        }
    }

    BroadCast Kodları ;

     

    public  class BootReciever extends BroadcastReceiver {
        private static final String TAG="Deneme-App";
    
        @Override public void onReceive(Context context, Intent intent){
    
            try{
    
    
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    context.startForegroundService(new Intent(context,DenemeService.class));
                }else{
                    context.startService(new Intent(context,DenemeService.class));
                }
    
                GcmNetworkManager   mGcmNetworkManager = GcmNetworkManager.getInstance(context);
                Task periodicTask = new PeriodicTask.Builder()
                        .setService(BestTimeService.class)
                        .setPeriod(1)
                        .setFlex(1)
                        .setTag("checkService")
                        .setPersisted(true)
                        .build();
    
    
                int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(context);
                if (resultCode == ConnectionResult.SUCCESS) {
                    mGcmNetworkManager.schedule(periodicTask);
                } else {
    
                    Log.e("Deneme-App", "Hello - Tag");
                }
                Log.e("Deneme-App", "Hello - Tag - OK");
                Log.e("Deneme-App","Starting Service ConnectivityListener");
            }catch(Exception e){
                Log.e("Deneme-App",e.toString());
            }
        }
    }

    Service kodları ;

     

    public class DenemeService extends Service {
    
    
        @Nullable
        @Override
        public IBinder onBind(Intent ıntent) {
            Log.e("Deneme-App", "Service Started");
            return null;
        }
    
        @Override
        public void onRebind(Intent intent) {
            Log.e("Deneme-App", "Service onRebind");
            super.onRebind(intent);
        }
    
        @Override
        public void onTaskRemoved(Intent rootIntent) {
            Log.e("Deneme-App", "Service onTaskRemoved");
            super.onTaskRemoved(rootIntent);
        }
    
        @Override
        public void onDestroy() {
            Log.e("Deneme-App", "Service onDestroy");
            super.onDestroy();
        }
    
        @Override
        public boolean onUnbind(Intent intent) {
            Log.e("Deneme-App", "Service onUnbind");
            return super.onUnbind(intent);
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            PushNotification();
            Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_LONG).show();
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public void onCreate() {
            Log.e("Deneme-App", "Service onCreate");
            super.onCreate();
        }
    
    }
    

    Manifest Kodları ;

            <service
                android:name=".BestTimeService"
                android:exported="true"
                android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
                <intent-filter>
                    <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
                </intent-filter>
            </service>
            <service android:name=".DenemeService" />
    
            <receiver
                android:name=".BootReciever"
                android:enabled="true"
                android:exported="false"
                android:label="BootReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    
                </intent-filter>
            </receiver>

     

     

    Bu ***mk lalesi beni kanser edecek bir türlü yapamadım.. Yukarıdaki kodda Telefon Boot edildiğinde servisi başlatıyor. Boot edildikten sonra JobScheduler çalışıyor ve servisi kontrol ediyor şayet servis çalışmıyorsa servisi tekrar başlatıyor...

     

    Bu algoritmanın sonucunda şöyle işlem adımı oluşuyor.

     

    -Telefon başlatıldı.

    -BroadCast çalıştı.

    -Servis başlatıldı.

    -JobScheduler başlatıldı.

    -Servis durduruldu.

    ////Ebesinin bilmem hangi zamanına kadar böyle bir iş döngüsü oluşuyor . Ben başlatıyom o kapatıyo ben başlatıyom o kapatıyo ben başlatıyorum o kapatıyor. Hayır karşımda muhattab olsa kafasını gözünü kırcam ama karşımda bir kod parçası var bir bok yapamıyoruz da. Trip atsa gönlünü alcaz. Para istese parasını vercez . Kızdan ayrıldıysa morali bozuksa yeni kız bulcaz yok **mk yok.

    {

    -JobScheduler çalıştı.

    -Servis başladı.

    -Servis durduruldu.

    }


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    https://stackoverflow.com/questions/4708827/persistent-service Burayı okudun mu?


    Olaylara karışmayın!
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    @Jpriest, Yok abi aynı şey zaten benim attığım kod ile sadece IntentService kullanmış ben Service kullandım bir farkı yok. Bu adamlar Servis içerisinde sürekli olarak bir iş yaptırdığından Scheduling mantığı olabilir. Ama bana sürekli realtime açık kalabilecek bir yapı lazım. Böyle Job ile değil. Servisin durmaması gerekiyor. 

    @YeniHarman , inceleyeyim abi.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 1553 Toplam Mesaj: 4
android-apcalcabirsorun-android-pişmanlık-tır