Új hozzászólás Aktív témák
-
Karma
félisten
"Akkor a custom View osztályban lesz egy mHandler = new Handler(); rész. Ha jól értem, ez rácsatlakozik az UI thread által létrehozott looper-re."
Igen és igen.
Hogyan tudom ezt az egészet megállítani? Kiadok egy mHandler.removeCallbacks() utasítást?
Igen. Ha megnézed a metódus szignatúráját, láthatod, hogy meg kell adni azt a Runnable példányt, aminek az ütemezését vissza akarod vonni.
"1. De mi lesz ebben a runnable? Vagy egy runnable-vel meg tudom csinálni a fenti sort?"
Ha kicsit konkretizáltad volna, hogy mit csinál a View-d és miért kell hozzá két ütem, nem kellene ennyire a levegőbe beszélnünk. Mindenesetre az biztos, hogy a késleltetett kódrészlete(ke)t ki kell raknod tagváltozó(k)ba, mert így tudsz a konkrét Runnable példányokra hivatkozni - melyek egyébként tipikusan lambdák vagy anoním osztályok.
Például (kicsit pszeudokód lesz, mert most nincs előttem IDE):
private Handler mHandler = new Handler();
private Runnable mDelayedStep = new Runnable() {
public void run() {
Log.w(TAG, "BOOM!");
}
};
public boolean onTouch(View v, MotionEvent event) {
mHandler.removeCallbacks(mDelayedStep);
mHandler.postDelayed(mDelayedStep, 5000);
return true;
}És ezzel írtál is egy mini játékot, amiben akkor robban a bomba, ha a felhasználó öt másodpercig nem nyúl a telefonhoz
Amíg simogatja, elodázza a végzetét.Retrolambdával egyébként egy kicsit tömörebb:
private Runnable mDelayedStep = () -> Log.w(TAG, "BOOM!");2. Azonnal megáll a végrehajtás, vagy a következő "tick" még lefut?
Azonnal hat, tehát nem fog lefutni, amit kivettél.
3. Ha leállítom, akkor rögtön indíthatok egy ugyanilyen ütemet, ugyanezekkel a példányokkal?
Persze. Sőt, ha az lenne az igény, egy Runnable-t többször is beütemezhetsz, mert a message queue-ba többször is bekerülhet ugyanaz a példány. Fontos megjegyezni, hogy a removeCallbacks az összes hozzá tartozó üzenetet kiveszi.
Új hozzászólás Aktív témák
- GL.iNet Flint 2 (GL-MT6000) router
- Lexus, Toyota topik
- exHWSW - Értünk mindenhez IS
- A fociról könnyedén, egy baráti társaságban
- EA Sports WRC '23
- Szeged és környéke adok-veszek-beszélgetek
- Túl jól fogy az S26, túlóráznia kell a gyártósoroknak
- Casco és kötelező gépjármű felelősségbiztosítás
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- hcl: GPT diszk kisebbre klónozása
- További aktív témák...
- Revel Performa3 5.1 szett + Primare SPA23
- Sony Alpha a7R IV tükör nélküli digitális fényképezőgép váz (ILCE-7RM4A) Új modell
- Új Dobozos Dell Latitude 3450 Laptop 14" -40% i7-1355U 16GB/256GB SSD NVIDIA MX570A 2GB FHD
- Megkímélt HP EliteBook 855 G7 Fémházas Strapabíró Laptop 15,6" -65% AMD Ryzen 3 PRO 4450U 16/256 FHD
- DDR5 Gamer PC - i5 14400f, RTX 3070 Ti, 1 TB SSD, Z 790-S Wifi
- Samsung Enterprise PM893 1,92TB/ SATA 2,5" SSD 4db/ számla-garancia
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- Google Pixel 9 Pro Fold - Obsidian - 16/256GB - Megkímélt állapotban - Google Jótállás:2026.12.09-ig
- 0PERCES BOSE QuietComfort Ultra Headphones, zajszűrős, Bluetooth fejhallgató!
- Xiaomi Redmi A3 Pro / 6/128GB / Kártyafüggetlen / 12Hó garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Amíg simogatja, elodázza a végzetét.
