Snowstorm (fd YrVader) - Svensk väderwidget

Diskussion i 'Applikationsutveckling' startad av Kaj, 1 jul 2009.

  1. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Kul med ett nytt team. Dessvärre så finns det en begränsning på hur många kB som en widget får exponera till processen som ritar. När jag började använda 4x2 bakgrunder från extern plats så slog jag i det taget.

    Det enda man kan göra nu när man gör teman är att namnge filen så att man antingen använder 4x2 glossy, eller 4x2 "matt" som bakgrund (båda de ligger nämligen med i Snowstorm.apk)

    Jag har planer på att skriva om hela Snowstorm, och då kommer det bli stöd för egna bakgrunder även för 4x2.
     
  2. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    I så fall kan du använda appen istället för en widget.

    Appen har en recent-flik och där kan man enkelt navigera mellan prognoser från platser man brukar titta på.
     
  3. Vandergrift

    Vandergrift Adult Droid Medlem

    Blev medlem:
    10 aug 2009
    Inlägg:
    712
    Mottagna gillanden:
    6

    MINA ENHETER

    Nu vet jag inte vem som ligger bakom "old-style" skinet som jag kör, men jag frågar ändå; finns det några planer på att fixa högre upplösning på de "stora" ikonerna som används på 4x2 widgeten?
     
  4. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Det var jag som fixade skinnet (men det var inte jag som ritade ikonerna). Hade inga planer på att anpassa det till större, men nu när någon visat intresse så kan det hända att jag fixar till det. Såg att jag har kvar photoshop-filerna.

    Edit: Nu finns 4x2 gloss samt gray old-style hd online.

    För att snowstorm inte skall behöva kolla allt för ofta mot sajten när man går in och väljer skin så håller programmet reda på när man senast gjorde en koll, och om det är mindre än X timmar sedan så görs ingen ny koll.

    Om du inte ser skinnen nu, om du går in under skins i Snowstorm så öppna Astro, och radera katalogen:
    /sdcard/snowstorm/.known_skins

    samt filen

    /sdcard/snowstorm/online_version

    Alternativt kan du vänta tills i morgon så skall du se filerna då :)
     
    Last edited: 24 jul 2010
  5. Skywriter

    Skywriter Professional Droid Medlem

    Blev medlem:
    22 sept 2009
    Inlägg:
    2 433
    Mottagna gillanden:
    142

    MINA ENHETER

    .008 är mycket snabbare än .007. Rutan med prognosen kommer nästan omedelbart och prognosen är laddad inom 1 sekund. Den laggar dock lite i scrollen.

    Här är en logg. Jag har gjort följande:
    klicka på widget
    tryckt tillbaka
    klickat på widget
    tryckt hem
    klickat på widget

    Bli medlem eller för att visa innehållet!


    Hoppas det hjälper

    Jag har en liten request också:)
    Jag skulle vilja ställa in hur många dagar som visas i prognosen.

    //La till spoilertags på din logcat output eftersom det tog 3 evigheter att scrolla ner
    //goa200
     
    Last edited by a moderator: 25 jul 2010
  6. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Varför vill du ställa in hur många dagar som skall visas?

    Jag tror att sista versionen av lazy loading nu ligger uppe på andbin.com:
    2.4.009:
    http://andbin.com/snowstorm/releases

    Release notes:
    Made the lazy loading in forecast view look a bit better
    Removed duplicate icons from all skins
    Removed a layout file that wasn't used
    Improved the image cache
    Added mapping for Rio de Janeiro in Brazil

    Edit: Angående "Removed duplicate icons from alla skins". Detta påverkar bara om man laddar ned ett skin som man inte redan har på sitt minneskort. Många skins hade duplicerade ikoner, så att t.ex ikoner för molnigt såg likadan ut för alla fyra perioder. Det gjorde att Snowstorm laddade alla fyra ikonerna (om de skulle visas). Om man bara har kvar unika ikoner så kommer Snowstorm själv välja att använda samma ikon för de perioder som saknar ikon. Det gör att minneshanteringen blir effektivare (och skinnen blir mindre i kB räknat).

    Om ni vill använda de nya skinnen, som ser likadana ut, så radera hela snowstorm katalogen från minneskortet, och välj sedan att ladda ned skins.
     
    Last edited: 25 jul 2010
  7. Vandergrift

    Vandergrift Adult Droid Medlem

    Blev medlem:
    10 aug 2009
    Inlägg:
    712
    Mottagna gillanden:
    6

    MINA ENHETER

    Haha så jävla underbart, skriver ett förslag på förbättring och nån timme senare är det klart :)
    Tackar och bugar, ser skitnice ut i telefonen.
     
  8. mannyb

    mannyb Androidpamp Moderator

    Blev medlem:
    14 maj 2009
    Inlägg:
    4 308
    Mottagna gillanden:
    778
    Operatör:
    Google Fi
    Telefon:
    Google Pixel 9 Pro Fold

    MINA ENHETER

    Operatör:
    Google Fi
    Telefon:
    Google Pixel 9 Pro Fold
    ROM:
    Stock
    Telefon 2:
    Google Pixel 8 Pro
    ROM:
    Stock
    Platta:
    Google Pixel Tab
    ROM:
    Stock
    Version 009 - nu talar vi rapphet. Nu är jag nere på 2-3 sek för att öppna prognovyn, vid "kallstart". Precis som det var förr. Detta gäller även med högupplösta ikoner. Härligt!

    Jag gick direkt från 007, och 009 är brutalt mycket snabbare på min trötta gamla lur.
     
  9. Skywriter

    Skywriter Professional Droid Medlem

    Blev medlem:
    22 sept 2009
    Inlägg:
    2 433
    Mottagna gillanden:
    142

    MINA ENHETER

    Eftersom tillförlitligheten för en prognos som är längre än 2-3 dagar är ganska låg så är det väldig sällan jag tittar mer än 3 dagar fram i tiden. Det känns därför onödigt att 10 dagar ska laddas in varje gång när jag ändå bara tittar på de första dagarna.

    Borde inte prestandan i prognosen förbättras om den visar färre dagar? Just nu är den lite ryckig när man scrollar. Scrollbaren ändrar dessutom storlek medan man scrollar men det är kanske ett separat problem.

    Bäst är kanske att när man klickar på widgeten så visas prognosen för de 3 dagar framåt man ser i 1x4-widgeten. När man sen scrollat ner till slutet av prognosen finns ett val att ladda de sista 7 dagarna. Det borde ge bra prestanda men inte göra det komplicerat de gånger man vill se en lite längre prognos. Valet i inställningarna kan då vara så enkelt att antingen visa 3+7 eller 10 i prognosvyn.

    .009 känns snabbare att ladda prognoserna än .008 men jag har inte gjort någon mätning. Vill du ha loggar med .009?
     
  10. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Jo, det går fortare att visa färre prognoser, men nu kommer det inte bli så stor skillnad (från 009).

    Har lite svårt att hitta vad det är som gör att det blir ryckigt när man scrollar. Jag ser att OS:et ofta gör garbage collection vid scrollning, men jag allokerar inga objekt då. Jag ändrar bara på en cachad layout, så jag har problem med att lösa det.

    Jag behöver inga fler loggar, såvida ingen hittat fel :)

    Tack för hjälpen
     
  11. Skywriter

    Skywriter Professional Droid Medlem

    Blev medlem:
    22 sept 2009
    Inlägg:
    2 433
    Mottagna gillanden:
    142

    MINA ENHETER

    Om ryckigheten uppstår pga av att garbage collector körs kanske blir bättre om man tvingar en collection direkt när prognosen är laddad. Det borde väl minska behovet under scrollning.

    Jag googlade lite och hittade den här frågetråden. http://stackoverflow.com/questions/2484079/how-can-i-avoid-garbage-collection-delays-in-java-games-best-practices
    Sista svaret är väl det som kan appliceras på Snowstorm.
     
  12. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Det som gör det problematiskt är att GC går igång om jag bara scrollar upp/ned, upp/ned osv. Det händer då flera ggr per scrollning. Därför verkar det som att något allokerar en massa temporära objekt. Skall kolla vidare och se om jag kan hitta vad det är, men jag allokerar inga objekt i min kod under scrollning.

    Edit: Iom att det finns olika många "prognosrader" per dag så måste jag under scrollning säga hur många som skall vara synliga i den daglayout som visas.

    Det görs med kod liknandes:
    view.setVisibility(View.VISIBLE) eller view.setVisibility(View.GONE)

    Det verkar som att det gör att Android internt gör något som skapar många temporära objekt. Jag har nu lagt till en koll så att om vyn redan har den visibility som skall sättas så görs inget. Kan ha blivit en aning bättre, men det är fortfarande så att GC körs flera ggr under en scrollning.
     
    Last edited: 25 jul 2010
  13. Skywriter

    Skywriter Professional Droid Medlem

    Blev medlem:
    22 sept 2009
    Inlägg:
    2 433
    Mottagna gillanden:
    142

    MINA ENHETER

    Jag kollade lite i loggen och det verkar som det inte spelar nån roll om man tvingar GC att köra. En gång när jag hade öppnat prognosen så kördes GC direkt efter men trots det så gick den igång under scroll. Synd att det inte går att tillfälligt hindra GC.

    Jag antar att du har sett den här artikeln http://android-developers.blogspot.com/2009/02/track-memory-allocations.html
     
  14. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Kände inte till att ddms kunde visa minnesallokeringar, men jag brukar alltid se upp för att skapa onödiga objekt, och särskilt när saker skall scrolla.
    Kollade minnesallokeringar, och alla kommer från Android och det pga hur tabellen hanterar "convertViews".

    Jag testade att sluta använda den vyn som tabellen har cachat och började cacha alla själv. Då går det mjukare, men det kan fortfarande hacka till lite. Dessutom förbrukar det mer minne, så jag vet inte om jag skall införa det eller ej. (Snowstorm gjorde så i de första versionerna, sedan tog jag bort det)
     
  15. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Har nu lagt upp ett nytt skin som liknar HTC marble, men i HD. Alla ikoner är dock inte samma som i det skin som mannyb satte ihop.

    Skinnet heter:
    4x2_glossy_custom_hd
    4x2_gray_custom_hd
     
  16. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    2.4.009 samt 2.4.010 hade en bugg som gjorde att om man lade till en ny widget som inte kunde ladda en prognos så small det i prognosvyn.

    Buggen är rättad i 2.4.011
     
  17. Fredriks

    Fredriks Android Medlem

    Blev medlem:
    9 jun 2010
    Inlägg:
    6 161
    Mottagna gillanden:
    2 294

    MINA ENHETER

    La precis in 2.4.011 i min mini Pro,jäklar vad snabb den blev.

    Du är det en riktigt grym app.

    Thanks !
     
  18. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    2.4.012 är upplagd på market.

    Har börjat lite med hour by hour nu. Jag kan parsa XML:en från Yr, och lyckas kasta bort data som inte är relevant för hour by hour (XML:en innehåller även information längre perioder än timmar)

    Kvar efter att jag kastat data blir 85 perioder som sträcker sig över flera dagar. I början får man en prognos för varje timme, och mot slutet kommer de ca var sjätte timme. Perioderna mot slutet får man inte heller någon symbol för (dvs man vet inte vilken ikon man skall rita, även om man får temperatur, nederbörd, molnlager osv).

    Vid nio idag fick man ned dessa perioder (-s indikerar att symbol saknas):

    Tue Jul 27 22:00:00 CEST 2010
    Tue Jul 27 23:00:00 CEST 2010
    Wed Jul 28 00:00:00 CEST 2010
    Wed Jul 28 01:00:00 CEST 2010
    Wed Jul 28 02:00:00 CEST 2010
    Wed Jul 28 03:00:00 CEST 2010
    Wed Jul 28 04:00:00 CEST 2010
    Wed Jul 28 05:00:00 CEST 2010
    Wed Jul 28 06:00:00 CEST 2010
    Wed Jul 28 07:00:00 CEST 2010
    Wed Jul 28 08:00:00 CEST 2010
    Wed Jul 28 09:00:00 CEST 2010
    Wed Jul 28 10:00:00 CEST 2010
    Wed Jul 28 11:00:00 CEST 2010
    Wed Jul 28 12:00:00 CEST 2010
    Wed Jul 28 13:00:00 CEST 2010
    Wed Jul 28 14:00:00 CEST 2010
    Wed Jul 28 15:00:00 CEST 2010
    Wed Jul 28 16:00:00 CEST 2010
    Wed Jul 28 17:00:00 CEST 2010
    Wed Jul 28 18:00:00 CEST 2010
    Wed Jul 28 19:00:00 CEST 2010
    Wed Jul 28 20:00:00 CEST 2010
    Wed Jul 28 21:00:00 CEST 2010
    Wed Jul 28 22:00:00 CEST 2010
    Wed Jul 28 23:00:00 CEST 2010
    Thu Jul 29 00:00:00 CEST 2010
    Thu Jul 29 01:00:00 CEST 2010
    Thu Jul 29 02:00:00 CEST 2010
    Thu Jul 29 03:00:00 CEST 2010
    Thu Jul 29 04:00:00 CEST 2010
    Thu Jul 29 05:00:00 CEST 2010
    Thu Jul 29 06:00:00 CEST 2010
    Thu Jul 29 07:00:00 CEST 2010
    Thu Jul 29 08:00:00 CEST 2010
    Thu Jul 29 09:00:00 CEST 2010
    Thu Jul 29 10:00:00 CEST 2010
    Thu Jul 29 11:00:00 CEST 2010
    Thu Jul 29 12:00:00 CEST 2010
    Thu Jul 29 13:00:00 CEST 2010
    Thu Jul 29 14:00:00 CEST 2010
    Thu Jul 29 15:00:00 CEST 2010
    Thu Jul 29 16:00:00 CEST 2010
    Thu Jul 29 17:00:00 CEST 2010
    Thu Jul 29 18:00:00 CEST 2010
    Thu Jul 29 19:00:00 CEST 2010
    Thu Jul 29 20:00:00 CEST 2010
    Thu Jul 29 21:00:00 CEST 2010
    Thu Jul 29 22:00:00 CEST 2010
    Thu Jul 29 23:00:00 CEST 2010
    Fri Jul 30 00:00:00 CEST 2010
    Fri Jul 30 01:00:00 CEST 2010
    Fri Jul 30 02:00:00 CEST 2010
    Fri Jul 30 03:00:00 CEST 2010
    Fri Jul 30 04:00:00 CEST 2010
    Fri Jul 30 05:00:00 CEST 2010
    Fri Jul 30 06:00:00 CEST 2010
    Fri Jul 30 07:00:00 CEST 2010 -s
    Fri Jul 30 08:00:00 CEST 2010 -s
    Fri Jul 30 14:00:00 CEST 2010 -s
    Fri Jul 30 20:00:00 CEST 2010 -s
    Sat Jul 31 02:00:00 CEST 2010 -s
    Sat Jul 31 08:00:00 CEST 2010 -s
    Sat Jul 31 14:00:00 CEST 2010 -s
    Sat Jul 31 20:00:00 CEST 2010 -s
    Sun Aug 01 02:00:00 CEST 2010 -s
    Sun Aug 01 08:00:00 CEST 2010 -s
    Sun Aug 01 14:00:00 CEST 2010 -s
    Sun Aug 01 20:00:00 CEST 2010 -s
    Mon Aug 02 02:00:00 CEST 2010 -s
    Mon Aug 02 08:00:00 CEST 2010 -s
    Mon Aug 02 14:00:00 CEST 2010 -s
    Mon Aug 02 20:00:00 CEST 2010 -s
    Tue Aug 03 02:00:00 CEST 2010 -s
    Tue Aug 03 08:00:00 CEST 2010 -s
    Tue Aug 03 14:00:00 CEST 2010 -s
    Tue Aug 03 20:00:00 CEST 2010 -s
    Wed Aug 04 02:00:00 CEST 2010 -s
    Wed Aug 04 08:00:00 CEST 2010 -s
    Wed Aug 04 14:00:00 CEST 2010 -s
    Wed Aug 04 20:00:00 CEST 2010 -s
    Thu Aug 05 02:00:00 CEST 2010 -s
    Thu Aug 05 08:00:00 CEST 2010 -s
    Thu Aug 05 14:00:00 CEST 2010 -s
    Thu Aug 05 20:00:00 CEST 2010 -s

    Antar att jag kan kasta bort alla som saknar symbol? Att få timme för timme för något som ligger tre dagar bort känns väl rätt menlöst?
     
  19. Travolta

    Travolta Professional Droid Medlem

    Blev medlem:
    14 apr 2010
    Inlägg:
    2 075
    Mottagna gillanden:
    869
    Telefon:
    Google Pixel 5

    MINA ENHETER

    Telefon:
    Google Pixel 5
    Platta:
    Nexus 9
    Osäker på vad som menas med timme-för-timme? Är tanken att man ska kunna se vädret timme för timme under dagen och följande dag eller är tanken att det i widgeten ska visas information för just den aktuella tiden (timmen)?

    Gissat att det är första alternativet ovan. Då tycker jag det räcker med att se nuvarande dag samt dagen efter. När man följer vädret så noga som man gör nu under semestern inser man hur osäkra prognoserna ofta är ett par dagar fram i tiden.
     
  20. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER