Developers » AS2 tagging » Android » Fonctionnalités avancées » Envoi des hits en arrière-plan
Envoi des hits en arrière-plan
Intérêt de lidentification
Lidentification vous permet de distinguer les hits envoyés suite à lutilisation directe de votre application, des hits envoyés automatiquement et indépendamment de lutilisateur en arrière-plan, à laide dune AsyncTask par exemple.
Marquage
Le tracker possède un objet context qui possède une propriété backgroundMode. Cest une énumération de type BackgroundMode.
Par défaut, cette propriété est positionnée à Normal. Dans tous les cas de marquage dun comportement automatique et indépendant de lutilisateur, il faut la positionner à Task.
Pour marquer ces types de fonctionnement, vous devez initialiser un nouveau tracker au sein de votre classe dans le cas d’un Service.
Dans le cas d’une AsyncTask, il est recommandé dutiliser une instance de tracker dédiée. Si vous souhaitez utiliser une seule instance de tracker, il faut alors penser à repositionner la propriété à Normal à la fin de lexécution de l’AsyncTask.
Exemples de marquage
- Marquage d’un service
public class DemoService extends IntentService { private Tracker tracker; public DemoService(String name) { super(name); } @Override public void onCreate() { super.onCreate(); tracker = ATInternet.getInstance().getTracker("serviceTracker"); tracker.Context().setBackgroundMode(Context.BackgroundMode.Task); } @Override protected void onHandleIntent(Intent intent) { // Do the work associated with the service tracker.Gestures().add("intent received").sendDownload(); } }
- Marquage d’une AsyncTask avec un tracker dédié
new AsyncTask<String, String, String>() { Tracker tracker = ATInternet.getInstance().getTracker("asyncTaskTracker"); @Override protected void onPreExecute() { super.onPreExecute(); tracker.Context().setBackgroundMode(Context.BackgroundMode.Task); } @Override protected String doInBackground(String... params) { tracker.Gestures().add("async task").sendDownload(); return null; } }.execute();
- Marquage d’une AsyncTask avec un tracker global
new AsyncTask<String, String, String>() { Tracker tracker = ATInternet.getInstance().getDefaultTracker(); @Override protected void onPreExecute() { super.onPreExecute(); tracker.Context().setBackgroundMode(Context.BackgroundMode.Task); } @Override protected String doInBackground(String... params) { tracker.Gestures().add("async task").sendDownload(); return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); tracker.Context().setBackgroundMode(Context.BackgroundMode.Normal); } }.execute(); }