Šta je novo?

Android - periodicna aktivnost

WebWolf

Čuven
Učlanjen(a)
18.09.2004
Poruke
3,816
Poena
735
Moja oprema  
CPU & Cooler
AMD Ryzen 5600 & Scythe Mugen
Matična ploča
MSI X470 Gaming Pro Carbon
RAM
Kingston HyperX Predator 16GB 3200MHz
GPU
GeForce RTX™ 3060 Ti GAMING OC PRO 8G
Storage
Samsung 970 Evo Plus 1TB & Samsung 970 Evo Plus 500GB
PSU
Corsair RM650x
Kućište
NZXT H500
Miš & tastatura
Cooler Master MK730 & Razer Basilisk v3
Mobilni telefon
Pixel 7 Pro
Pametni uređaji
Xiaomi Roborock 6
Xiaomi Air Purifier 3H
Pristup internetu
  1. Optički internet
Imam pitanje za Android profesionalce. Moram na 10 sekundi nesto da posaljem i pokupim sa servera. I za to sam nasao milion nacina da uradim, AsyncTask, Thradovi, ScheduledExecutorService, Runnable...

Pokusao sam tri nacina do sada i svi rade, ali jednostavno ne znam koji je pravilan. Threadovi uniste bateriju, AsyncTask je nepreporucen, sada sam se zaustavio na ScheduledExecutorService, ali on po svemu sudeci ne radi ako je aktivnost u backgroundu (npr. korisnik se javlja na poziv) kao sto bi bilo kod AsyncTask.

Elem, postavim ti ja pitanje na StackOverflow i evo sta dobijem:

http://stackoverflow.com/questions/12159012/proper-way-of-implementing-a-periodic-action

Jos vecu zbrku... Dakle, zna li ovde neko sta je ispravno? Naravno, da usput ne zakocim UI...
 
Ja obicno ili Imam Thread koji spava po 10 sekundi i onda opalim handler.

A mozes i alarm da postavis, i to je dobro resenje:

Evo kako ja pozivam alarm u jednoj svojoj aplikaciji:

Kod:
private void createAndStartAlarm(Context context, Calendar dateForAlarm){
		Log.d("alarm", dateForAlarm.get(Calendar.HOUR)+" : "+dateForAlarm.get(Calendar.MINUTE));
		ApplicationClock.setAlarm(dateForAlarm.getTimeInMillis());
		Intent intent = new Intent(context, com.novo.clock.receivers.AlarmReceiver.class);
		AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE);
		
		PendingIntent sender = PendingIntent.getBroadcast(this, ApplicationClock.ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);

		alarmManager.set(AlarmManager.RTC_WAKEUP, dateForAlarm.getTimeInMillis(), sender);
	}


Sad u tvom activity-u mozes da registrujes Broadcast receiver, i onda da prihvatis event.
 
Nazad
Vrh Dno