Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
Registrovaný: 11.02.09 Prihlásený: 12.11.24 Príspevky: 2208 Témy: 145 | 145 Bydlisko: Liptovský M... |
Napisal som triedu, ktora zobrazuje cas dve textove polia a obnovuje ich kazdych 10 milisekund. To je snad dost casu aby sa tento kod stihol vykonat, ale co keby som to nastavil na 1 milisekundu, stihalo by sa to v pohode? Kód: public class SRStimer extends Timer {
protected String b_string, s_string, prog; protected int spl, counter, sec, min, hour = 0; protected boolean split; protected Handler handler; protected TextView b, s; protected TimerTask task;
public SRStimer(Handler h, TextView big, TextView small) {
handler = h; b = big; s = small;
}
public void start(String program) {
prog=program;
task = new TimerTask() {
@Override public void run() {
if (prog.equals("stopwatch")) {
counter++; if (counter == 100) { counter = 0; sec++; } if (sec == 60) { sec = 0; min++; } if (min == 60) { min = 0; hour++;} if (hour == 24) { hour = 0; }
}
if (prog.equals("timer")) {
counter--; if (counter < 0) { counter = 99; sec--; } if (sec < 0) { sec = 59; min--; } if (min < 0) { min = 59; hour--;} if (hour < 0) { return; }
}
if (split) { // Split-time, nachvilu sa zastavi predavanie stringov do UI, ale cas bezi
spl++; if (spl>75) { split=false; } }
else { // Formatovnie stringov a postnutie do UI threadu
format_text();
} } };
super.scheduleAtFixedRate(task, 10, 10);
}
public void stop() {
task.cancel(); super.purge();
}
public void set_timer_time(int h, int m, int s) { hour = h; min = m; sec = s; counter = 0; format_text(); }
public void split() {
split = true; spl = 0;
}
public void pause() {
task.cancel(); super.purge();
}
public void resume() {
start(prog);
}
public String get_b_time() {
return b_string;
}
public String get_s_time() {
return s_string;
}
public void format_text() {
String space = ""; if (hour < 10) { space = "0"; } else { space = ""; } b_string = (space + Integer.toString(hour) + ":");
if (min < 10) { space = "0"; } else { space = ""; } b_string = (b_string + space + Integer.toString(min) + ":");
if (sec < 10) { space = "0"; } else { space = ""; } b_string = (b_string + space + Integer.toString(sec));
if (counter < 10) { space = "0"; } else { space = ""; } s_string = ("." + space + Integer.toString(counter));
handler.post(new Runnable() {
@Override public void run() { b.setText(b_string); s.setText(s_string); }
}); } }
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
Čo tak si to odmerať a overiť si hypotézu?
_________________ C#, PHP, ... |
|
Registrovaný: 11.02.09 Prihlásený: 12.11.24 Príspevky: 2208 Témy: 145 | 145 Bydlisko: Liptovský M... |
tak ja to robim na emulatore a ten ide pomaly, tam mi to bezne preskakuje aj o 20fps tak to moc nechcem skusat na tom.
Ide aj o to, ze sa tam zakazdym vytvara novy objekt Runnable, ktory sa navyse predava cez handler do druheho vlakna. Teda neviem ci to sposobuje nejake vyznamnejsie zdrzanie ale znie to trochu divoko.
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Existuje na to jedno rozumne riesenie - mat kod, ktory sa spusti iba raz a vzdy po ukonceni behu sam seba rekurzivne zavola. Nemozes sa spoliehat na to, ze akykolvek kod sa spusti za nejaky pevne urceny cas, zavisi to od miliona okolnosti.
|
|
Registrovaný: 11.02.09 Prihlásený: 12.11.24 Príspevky: 2208 Témy: 145 | 145 Bydlisko: Liptovský M... |
Aha, takze takto to riesit je uplny nezmysel?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno | |
Registrovaný: 15.01.07 Prihlásený: 23.09.15 Príspevky: 186 Témy: 3 | 3 Bydlisko: ZV/BA |
Duri ma pravdu, tiez suhlasim, nikdy to nie je fixne, lebo sa prideluju vypoctove zdroje dynamicky (operacny system)
a nejak som nepochopil v akom "emulatore" to mas
_________________ nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot " 1000.times { puts "I will not spam on the boards" } " |
|
Registrovaný: 19.09.06 Prihlásený: 09.01.25 Príspevky: 749 Témy: 31 | 31 Bydlisko: Ružomberok&... |
Ďuri píše: Existuje na to jedno rozumne riesenie - mat kod, ktory sa spusti iba raz a vzdy po ukonceni behu sam seba rekurzivne zavola. Nemozes sa spoliehat na to, ze akykolvek kod sa spusti za nejaky pevne urceny cas, zavisi to od miliona okolnosti. Nevyhoda tohto riesenia je zas ta ze ked to bude bezat dostatocne dlho tak mu pretecie zasobnik a program mu padne..
|
|
Registrovaný: 11.02.09 Prihlásený: 12.11.24 Príspevky: 2208 Témy: 145 | 145 Bydlisko: Liptovský M... |
matwej píše: Duri ma pravdu, tiez suhlasim, nikdy to nie je fixne, lebo sa prideluju vypoctove zdroje dynamicky (operacny system)
a nejak som nepochopil v akom "emulatore" to mas http://developer.android.com/tools/help/emulator.htmlTak teda ako je to mozne zrealizovat, da sa to vobec nejakym normalnym, mne zvladnutelnym sposobom?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
stopa27 píše: Nevyhoda tohto riesenia je zas ta ze ked to bude bezat dostatocne dlho tak mu pretecie zasobnik a program mu padne.. Snad je Java dostatocne inteligentna, aby vedela tail call optimization...
|
|
Registrovaný: 19.09.06 Prihlásený: 09.01.25 Príspevky: 749 Témy: 31 | 31 Bydlisko: Ružomberok&... |
to ja neviem je?
|
|
Registrovaný: 11.02.09 Prihlásený: 12.11.24 Príspevky: 2208 Témy: 145 | 145 Bydlisko: Liptovský M... |
Ale tak ta trieda Timer s metodou na casovanie scheduleAtFixedRate(task, 10, 10) je hadam naprogramovana dost dobre na to aby to casoval presne po x milisekundach nie?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 8 | 1551 | 01.11.2008 9:18 p360t | | v HTML, XHTML, XML, CSS | 3 | 563 | 30.07.2024 18:13 juro333 | | v JavaScript, VBScript, Ajax | 1 | 593 | 08.03.2016 15:41 killer | | v Sieťové a internetové programy | 1 | 342 | 22.09.2011 20:01 Denco1 | | v Sociálne siete | 3 | 533 | 19.11.2020 0:10 okooko | | v HTML, XHTML, XML, CSS | 4 | 499 | 23.04.2016 12:51 Pavolbablik | | v JavaScript, VBScript, Ajax | 9 | 939 | 25.07.2008 20:17 beks | | v JavaScript, VBScript, Ajax | 0 | 595 | 12.07.2009 17:20 d0.0b | | v HTML, XHTML, XML, CSS | 9 | 662 | 10.02.2011 21:25 walther | | v PHP, ASP | 6 | 696 | 30.06.2009 13:39 rooobertek | | v Ostatné | 0 | 548 | 09.03.2017 10:42 mio | | v PHP, ASP | 1 | 548 | 20.04.2009 8:53 Blackdevil | | v Redakčné systémy | 6 | 690 | 19.01.2007 22:42 Tom@S | | v Databázy | 1 | 477 | 05.09.2012 23:34 stenley | | v PHP, ASP | 3 | 2622 | 01.11.2006 10:55 itsgoingd | | v PHP, ASP | 2 | 537 | 19.07.2012 15:40 elo |
|