Turkhackteam.net/org - Turkish Hacking & Security Platform  
Geri git   Turkhackteam.net/org - Turkish Hacking & Security Platform >
Programlama
> Java

Java Object Oriented Programming temeline dayanan, çok işlevli, step by step işleyen dilin dökümanlarının paylaşım alanı.




Android Arkaplan Servisleri Geliştirmek.[ÇEVİRİ KONU ]

Java

Yeni Konu aç Cevapla
 
Seçenekler
Alt 18-06-2017 01:11   #1
  • Binbaşı
  • Üye Bilgileri
Üyelik tarihi
04/2014
Nereden
el psy congr
Yaş
21
Mesajlar
Konular

Teşekkür (Etti): 191
Teşekkür (Aldı): 315


Android Arkaplan Servisleri Geliştirmek.[ÇEVİRİ KONU ]



Merhaba arkadaşlar bu gün sizlere androidde arkaplan servisi nasıl geliştirilir bundan bahsedeceğim.Bunu yapmanın iki yolu var service ve intentservice

Hadi Başlayalım.

Kod:
http://blog.rhesoft.com/images/android-studio.png
Android Studio Tutorial

1.Android Tutorial Hakkında

Size bir çok şey göstereceğim.İyi çalışan kütüphaneleri ,kullanıcı arayüzlerini ve daha nicelerini.

bu rehberlerde Android Studio ve Gradle kullanacağım.Herhangi bir kütüphane hakkında bir sorunuz olursa özgürce sorabilirsiniz ve belki ben bu konuda bir tutorial hazırlayabilirim.

Bu arada projemizin kaynak kodları ve diğer içerikler için Github linki

2.Android Arkaplan Sevisleri

Herhangi bir işi gerçekleştirmek için arkaplan servislerini kullanmak isteyebilirsiniz.Bunun için elimizde iki yöntem var bundan yukarıda zaten bahsetmiştim.

Service herhangi bir Android arka plan hizmeti için gerekli temel sınıftır.Bu sınıf herhangi bir arkaplan sınıfını execute etmek ve kill etmek için bazı methodlar sunar.
İntentSercive daha basit bir sınıftır.Ayrı çalışan threadleri bütün işlemlerden sonra kendisi sonlandırır.

Hadi anlattıklarımızı pratiğe dökelim.

3.Android Studio Projesi Oluşturmak

Boş bir proje oluşturalım.(Blank Activiy)
Aynı projede iki yöntemide test edeceğiz.


Bu sınıfların yaşam döngüsü hakkında ayrıntılı bilgi için dökümantasyona göz atabilirisiniz.

4. -IntentService Uygulaması

İntentService ile bir Cpu'nun göreveleri engelleme (Blocking Task)yöntemlerini simule edeceğiz tıpkı bir dosya işleme ve resim işlemede olduğu gibi.(çn: Asenkron çalışan threadler ve process alakalı olsa gerek java bilmiyorum .)

TutorialIntentService adında İntentServiceden referans alan bir sınıf oluşturuyoruz.Mesela şöyle bir şey.

Kod:
public class TutorialIntentService extends IntentService{

  public TutorialIntentService() {
     this(TutorialIntentService.class.getName());
  }


  /**
   * Creates an IntentService.  Invoked by your subclass's constructor.
   *
   * @param name Used to name the worker thread, important only for debugging.
   */
  public TutorialIntentService(String name) {
      super(name);
  }

  @Override
  protected **** onHandleIntent(Intent intent) {

  }
}

İntentService daha basit bir servistir. Bu hizmet yürütüldüğünde, onHandleIntent methodu çalıştırılacaktır. Zaten yeni bir thread üzerinde çalışacak, böylece cpu-blocking task işlemini buradan yürütebilirsiniz.

hadi bir dosya sıkıştırma işlemini 10 saniyeliğine simule edelim.

Kod:
@Override
protected **** onHandleIntent(Intent intent) {
   showToast("Starting IntentService");
   try {
       Thread.sleep(10000);
   } catch (InterruptedException e) {
       Thread.currentThread().interrupt();
   }
   showToast("Finishing IntentService");
}
Çalışırken kullanıcı arayüzünde bir şey gözükmeyebililr bunu göstermek için Toast kulllanıyoruz.(Bknz:Android – Toast Kullanımı | Kod5.org)

Kod:
protected **** showToast(final String msg){
    //gets the main thread
    Handler handler = new Handler(Looper.getMainLooper());
    handler.post(new Runnable() {
        @Override
        public **** run() {
            // run this code in the main thread
            Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
        }
    });
}

Hadi şimdi nasıl bir service yaratacağımıza bakalım.

5.Service uygulaması

Service ile sistemde sürekli olarak çalışan bir görevi simule edeceğiz.

Yeni oluşturduğumuz Sınıfa TutorialIntentService ismini verip IntentService sınıfını refere ediyoruz.


Kod:
package com.rhesoft.blog.backgroundservice;

import android.app.Service;
import android.content.Intent;
import android.os.*;
import android.os.Process;
import android.widget.Toast;

public class TutorialService extends Service {

  private Looper mServiceLooper;
  private ServiceHandler mServiceHandler;

  @Override
  public **** onCreate() {
      // To a**** cpu-blocking, we create a background handler to run our service
      HandlerThread thread = new HandlerThread("TutorialService",
                                Process.THREAD_PRIORITY_BACKGROUND);
      // start the new handler thread
      thread.start();

      mServiceLooper = thread.getLooper();
      // start the service using the background handler
      mServiceHandler = new ServiceHandler(mServiceLooper);
  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
      Toast.makeText(this, "onStartCommand", Toast.LENGTH_SHORT).show();

      // call a new service handler. The service ID can be used to identify the service
      Message message = mServiceHandler.obtainMessage();
      message.arg1 = startId;
      mServiceHandler.sendMessage(message);

      return START_STICKY;
  }

  protected **** showToast(final String msg){
    //gets the main thread
    Handler handler = new Handler(Looper.getMainLooper());
    handler.post(new Runnable() {
        @Override
        public **** run() {
            // run this code in the main thread
            Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
        }
    });
  }

  @Override
  public IBinder onBind(Intent intent) {
      return null;
  }

  // Object responsible for
  private final class ServiceHandler extends Handler {

      public ServiceHandler(Looper looper) {
          super(looper);
      }

      @Override
      public **** handleMessage(Message msg) {
          // Well calling mServiceHandler.sendMessage(message); from onStartCommand,
          // this method will be called.

          // Add your cpu-blocking activity here
      }
  }
}
Yukarıdaki kod, yeni bir thread başlatacak ve bu thread servisleri çalıştıracaktır. Her Service ServiceHandler sınıfında çalışacak ve handleMessage üzerinde arka plan görevlerinizi eklemeniz gerekiyor.

benimkisii basit bir örnek sadece 5 saniyede sona eriyor.

Kod:
@Override
public **** handleMessage(Message msg) {
    // Well calling mServiceHandler.sendMessage(message);
    // from onStartCommand this method will be called.

    // Add your cpu-blocking activity here
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    }
    showToast("Finishing TutorialService, id: " + msg.arg1);
    // the msg.arg1 is the startId used in the onStartCommand,
    // so we can track the running sevice here.
    stopSelf(msg.arg1);
}

6. Servisi Kaydetmek (Register)

Android servislerine manifest içerisine de eklemelisiniz kullanıdğınız projelerde.
Kod:
<service android:name=".TutorialIntentService" />
<service android:name=".TutorialService" />



7.Projeyi Çalıştırın.

Her iki hizmeti de aynı şekilde başlatabilirsiniz. Bu tutorialı basit tutmak için, boş projeyle oluşturulan MainActivity ile başlatıyorum.










___________________________________________

asdasdasdasrtewter


Konu Zeref tarafından (18-06-2017 01:14 Saat 01:14 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Teşekkür

Volkan FG Teşekkür etti.
Alt 18-06-2017 04:02   #2
  • Yüzbaşı
  • Üye Bilgileri
Üyelik tarihi
12/2015
Nereden
©Volkan͐
Mesajlar
Konular

Teşekkür (Etti): 552
Teşekkür (Aldı): 236




Eline sağlık dostum konu oldukça faydalı görünüyor iyi çevrimiş



___________________________________________

SİZİ SİZDEN DAHA İYİ TANIYORUZ
Volkan FG
PENTESTER
| TurkishCyberRaiders |-| OYUN GELİŞTİRME KULÜBÜ |

Konu KeyLo99 tarafından (18-06-2017 19:24 Saat 19:24 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Alt 18-06-2017 19:23   #3
  • AR-GE Tim Lideri
  • Üye Bilgileri
Üyelik tarihi
10/2015
Mesajlar
Konular

Teşekkür (Etti): 1714
Teşekkür (Aldı): 3280




Gereksiz postlar silindi. Devam...
 Offline  
 
Alıntı ile Cevapla
Alt 18-06-2017 19:25   #4
  • Binbaşı
  • Üye Bilgileri
Üyelik tarihi
04/2014
Nereden
el psy congr
Yaş
21
Mesajlar
Konular

Teşekkür (Etti): 191
Teşekkür (Aldı): 315




Alıntı:
KeyLo99´isimli üyeden Alıntı Mesajı göster
Gereksiz postlar silindi. Devam...
Ellerine sağlık teşekkürler.



___________________________________________

asdasdasdasrtewter

 Offline  
 
Alıntı ile Cevapla
Alt 18-06-2017 19:27   #5
  • Tamamen Forumdan Uzaklaştırıldı
  • Üye Bilgileri
Üyelik tarihi
03/2017
Nereden
T Ü R K
Mesajlar
Konular

Teşekkür (Etti): 791
Teşekkür (Aldı): 1002




Eline sağlık dostum.
 Offline  
 
Alıntı ile Cevapla
Cevapla

Bookmarks

Seçenekler


Bilgilendirme Turkhackteam.net/org
Sitemizde yer alan konular üyelerimiz tarafından paylaşılmaktadır.
Bu konular yasalara uygunluk ve telif hakkı konusunda yönetimimiz tarafından kontrol edilse de, gözden kaçabilen içerikler yer alabilmektedir.
Bu tür konuları turkhackteamiletisim [at] gmail.com mail adresimize bildirebilirsiniz, konular hakkında en kısa sürede gerekli işlemler yapılacaktır.
Please Report Abuse, DMCA, Harassment, Scamming, Warez, Crack, Divx, Mp3 or any Illegal Activity to turkhackteamiletisim [at] gmail.com

Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz.
Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.



         

Powered by vBulletin® Copyright ©2000 - 2019

TSK Mehmetçik Vakfı

Türk Polis Teşkilatını Güçlendirme Vakfı

Google+

web tasarım

wau