Styrketräningsapp

Diskussion i 'Applikationsutveckling' startad av filosofis, 7 apr 2016.

  1. filosofis

    filosofis Kid Droid Medlem

    Blev medlem:
    1 feb 2011
    Inlägg:
    35
    Mottagna gillanden:
    8

    MINA ENHETER

    Uppdatering: Databasen fungerar nu kalas bra. Nu är nästa steg att presentera statistik för användaren baserat på utförda pass (Progression i styrka framförallt), samt visa Intensitet / Volym grafer för nuvarande träningspass. Jag tänker förenkla volymen till antal repetitioner (sets*reps) och Intensiteten till % av 1RM(1 Rep Max). Och beräkningarna kommer bara ske på dem lyft som har lagrad information om 1RM vilket är Knäböj, Bänk, Mark, Militär Press.

    Jag börjar också närma mig tiden för att göra appen mindre ful, vilket jag inte har någon särskilt bra plan för. Om någon har tips på resurser för hur man snyggar till app layouter så e jag idel öra.

    Håller på att utveckla en app som ska ersätta typiska excell ark som annars ofta används för att beskriva träningsprogram / hålla koll på det programmet man kör för tillfället.

    Strukturen i appen e en databas som lagrar "Exercises" med vikt, reps, sets, vilket pass dem tillhör samt namn på övning. Vad jag dock upptäckt när jag förde in ett större program på 16veckor med 112 "Exercises" är att det tog ett par sekunder för min nexus 5x att lägga in programmet. Så vad jag undrar nu är om detta är rimlig prestanda och jag borde implementera nån form av laddnings popup typ progress bar, eller ifall detta borde kunna köras "instant" med någon form av optimering?
     
    Last edited: 5 maj 2016
  2. Ero

    Ero Teen Droid Medlem

    Blev medlem:
    6 jan 2011
    Inlägg:
    302
    Mottagna gillanden:
    48
    Operatör:
    Telia
    Telefon:
    iPhone XS

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    iPhone XS
    Info:
    Jobbtelefon
    Det är otroligt svårt att svara på dina frågor utan att ha någon som helst kod att kolla på, mest troligt så är "några sekunder" en antydan på att något är galet. Jag gissar att det bara är lite texter som behandlas (kan inte testa appen i brist på en android just nu), och inte något "tungt" som bilder?

    Innan du börjar fundera på något som visas medan det laddas, så försök gå igenom koden och kolla om du gör några onödiga metodanrop, någon slags loop som kan optimeras.

    Men som sagt, väldigt svårt att komma med något utan att ha kollat koden.
     
  3. filosofis

    filosofis Kid Droid Medlem

    Blev medlem:
    1 feb 2011
    Inlägg:
    35
    Mottagna gillanden:
    8

    MINA ENHETER

    Ja jag får också en känsla av att "några sekunder" 2-3 btw, förmodligen handlar om något som borde kunna optimeras bort snarare än en laddnings tid. Och det rör sig bara om väldigt simpel data inga bilder eller något särskilt tungt. Dock har jag inte så mycket kunskap om hur många beräkningar som görs när man för in saker i en sqlite databas.

    Metoderna för att lägga in program i databasen ser ut såhär för första passed respektive andra (vilket representerar en vilodag eller ett tomt pass) totalt läggs i det största programmet 112 pass in vilket är runt 400 anrop till insertExercise().

    Kod:
    WorkoutDB.getInstance().insertExercise(1, "Squat", 0.6, 5, 10);
    WorkoutDB.getInstance().insertExercise(1, "RDL", 0, 3, 12);
    WorkoutDB.getInstance().insertExercise(1, "Lunges", 0, 3, 20);
    WorkoutDB.getInstance().insertExercise(1, "Plank", 0, 3, 30);
    
    WorkoutDB.getInstance().insertExercise(2, "REST", 0, 0, 0);
    
    Om du eller någon annan vill se koden i sin helhet (som den ser ut vid skrivande stund) så finns den här
    https://drive.google.com/drive/u/0/folders/0B0wuBVjjG3gpRDlCclVPVFlfeFE

    förresten så har jag ingen som helst trådhantering i programmet, skulle d kanske underlätta med att det bara inte ligger på main tråden?
     
  4. filosofis

    filosofis Kid Droid Medlem

    Blev medlem:
    1 feb 2011
    Inlägg:
    35
    Mottagna gillanden:
    8

    MINA ENHETER

    Hittat problemet och lösningen. Tydligen skapar varje insert en egen "transaction" vilket tar en massa tid. Så för att optimera ett stort antal inserts behöver man paketera dem till en transaktion genom att kalla beginTransaction() före och setTransactionSuccessfull() följt av endTransaction() efter man är färdig med insertarna.
     
    riper och e7andy gillar detta.
  5. Ero

    Ero Teen Droid Medlem

    Blev medlem:
    6 jan 2011
    Inlägg:
    302
    Mottagna gillanden:
    48
    Operatör:
    Telia
    Telefon:
    iPhone XS

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    iPhone XS
    Info:
    Jobbtelefon
    Fint! Märks det någon laddtid nu?
     
  6. filosofis

    filosofis Kid Droid Medlem

    Blev medlem:
    1 feb 2011
    Inlägg:
    35
    Mottagna gillanden:
    8

    MINA ENHETER

    Nej laddningstiderna är helt omärkbara :)
     
  7. Ero

    Ero Teen Droid Medlem

    Blev medlem:
    6 jan 2011
    Inlägg:
    302
    Mottagna gillanden:
    48
    Operatör:
    Telia
    Telefon:
    iPhone XS

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    iPhone XS
    Info:
    Jobbtelefon
    Skapa gärna upp ett GIT-projekt av det hela! :-)
     
  8. filosofis

    filosofis Kid Droid Medlem

    Blev medlem:
    1 feb 2011
    Inlägg:
    35
    Mottagna gillanden:
    8

    MINA ENHETER

  9. Ero

    Ero Teen Droid Medlem

    Blev medlem:
    6 jan 2011
    Inlägg:
    302
    Mottagna gillanden:
    48
    Operatör:
    Telia
    Telefon:
    iPhone XS

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    iPhone XS
    Info:
    Jobbtelefon
    Det första jag tänkte på är att bryta ut hårdkodade texter så det blir översättningsbart OCH att rätta ev. stavfel blir väldigt mycket lättare. Hittade även lite annan småkod som går att skriva om lite och göra mer konsekvent (t.ex.klassen ProgramListActivity.java. Jämför
    Kod:
    public void codersChoice()
    och
    Kod:
    public void juggernaut()
    . de gör egentligen samma sak men ser väldigt olika ut.)
     
    Last edited: 13 maj 2016
    filosofis gillar detta.
  10. filosofis

    filosofis Kid Droid Medlem

    Blev medlem:
    1 feb 2011
    Inlägg:
    35
    Mottagna gillanden:
    8

    MINA ENHETER

    Fixade strängarna, jag har väl ingen tanke på att översätta skiten egentligen men som du säger stavfel och grejer blir ju också lättare att åtgärda. Sen är det väl lika bra att vänja sig vid att alltid använda sträng resurser.

    Tack för att du tog dig tiden att kika på min kod btw :) uppskattar det verkligen.