Timer läuft in Endlosschleife.

  • Antworten:27
Flo
  • Forum-Beiträge: 73

04.03.2014, 18:18:03 via Website

Ich habe nen Timer der eigentlich nur einmal(beim drücken eines Buttons) starten sollte.
Er läuft aber in einer Endlosschleife. Hättet ihr einen Vorschlag?

P-TMax J.SvenDD

Antworten
P-T
  • Forum-Beiträge: 745

04.03.2014, 18:21:04 via Website

Timer hören nicht automatisch auf. Du musst sie abbrechen/beenden

Posts vor dem 22.12.2014 sind von dem Vorgänger dieses Accounts

Gelöschter Account

Antworten
Flo
  • Forum-Beiträge: 73

04.03.2014, 18:22:55 via Website

Ja schon aber wie?
Bei nem timer.cancel();(nach dem Timer.start();) startet der Timer garnicht erst.

P-TMax J.SvenDD

Antworten
P-T
  • Forum-Beiträge: 745

04.03.2014, 18:24:57 via Website

Das ist ja logisch. Du musst es im Timer_tick event machen.
P.S kleine Frage: Wie lange programmierst du schon? Ich rate dir nochmal die Grundlagen anzuschauen
Grüße

Posts vor dem 22.12.2014 sind von dem Vorgänger dieses Accounts

Gelöschter Account

Antworten
Flo
  • Forum-Beiträge: 73

04.03.2014, 18:28:04 via App

Ich programmiere ähm seit ner Woche. :D Danke dir.

P-TMax J.SvenDD

Antworten
P-T
  • Forum-Beiträge: 745

04.03.2014, 18:30:47 via Website

Bitte schau dir doch mal die Grundlagen an!
Das ist Basiswissen ;)

Posts vor dem 22.12.2014 sind von dem Vorgänger dieses Accounts

Gelöschter Account

Antworten
Michele
  • Forum-Beiträge: 1.525

04.03.2014, 22:21:27 via Website

Chris H.
Bitte schau dir doch mal die Grundlagen an!
Das ist Basiswissen ;)

@Chris H.
Erstmal solltest du fragen ob er B4a oder Java Lernt/Programmiert :P.
Da du B4a und er Java lernt, sieht das ganz anders aus.

http://developer.android.com/reference/java/util/Timer.html

Mit cancel(); kannst du Ihn beenden.
Und natürlich musst du Ihn richtig setzen.
Sonst ist logisch das nichts klappt.


LG

— geändert am 04.03.2014, 22:31:43

Antworten
P-T
  • Forum-Beiträge: 745

05.03.2014, 11:09:37 via Website

Michele
Chris H.
Bitte schau dir doch mal die Grundlagen an!
Das ist Basiswissen ;)

@Chris H.
Erstmal solltest du fragen ob er B4a oder Java Lernt/Programmiert :P.
Da du B4a und er Java lernt, sieht das ganz anders aus.

http://developer.android.com/reference/java/util/Timer.html

Hier ist der Timer. Erst Googlen, dann fragen.
Mit cancel(); kannst du Ihn beenden.
Und natürlich musst du Ihn richtig setzen.
Sonst ist logisch das nichts klappt.


LG
Timer sind aber immer gleich. und dass er Java programmiert war mir auch klar.
P.S Ich hab mir schon mal Java angeschaut aber das ist sowas von kompliziert...

Posts vor dem 22.12.2014 sind von dem Vorgänger dieses Accounts

Antworten
Fabian Simon
  • Forum-Beiträge: 359

05.03.2014, 11:30:53 via Website

Chris H.
aber das ist sowas von kompliziert...

kompliziert oder vielseitig.....
Ich bin der Meinung das Java wenigstens Klar und genau definiert ist gegenüber basic...

SvenDD

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 12:39:07 via App

basic = visual basic ?? oder so?

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

05.03.2014, 13:19:21 via Website

Ihr kommt vom Thema ab!

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 13:27:52 via App

Ist ja eig. gelöst.

EDIT: Nein doch nicht :D

Meine App stürzt beim onPause ab wenn der Timer nicht läuft.
Ich bin mir nicht sicher ob ich das mit dem Timer richtig gecodet habe.
1public void onPause() {
2 super.onPause();
3 if (abspieler.isPlaying()) {
4 abspieler.stop();
5 }
6 Toast.makeText(getApplicationContext(), "Das Spiel wurde beendet.", Toast.LENGTH_SHORT).show();
7
8 finish();
9
10
11}

— geändert am 05.03.2014, 13:35:48

Antworten
Michele
  • Forum-Beiträge: 1.525

05.03.2014, 13:35:11 via Website

Dann sag das hier im Thread auch und setze es auf "Beantwortet".


LG

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 13:37:23 via Website

Flo
Ist ja eig. gelöst.

EDIT: Nein doch nicht :D

Meine App stürzt beim onPause ab wenn der Timer nicht läuft.
Ich bin mir nicht sicher ob ich das mit dem Timer richtig gecodet habe.
1public void onPause() {
2 super.onPause();
3 if (abspieler.isPlaying()) {
4 abspieler.stop();
5 }
6 Toast.makeText(getApplicationContext(), "Das Spiel wurde beendet.", Toast.LENGTH_SHORT).show();
7
8 finish();
9
10
11}

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.03.2014, 14:12:11 via Website

Dann musst du überprüfen ob der timer läuft...

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 14:13:29 via Website

Hab ich ja.
if (abspieler.isPlaying()){

Antworten
Michele
  • Forum-Beiträge: 1.525

05.03.2014, 14:17:14 via Website

Das ist nicht dein Timer sondern dein MediaPlayer.
Dazu weiß ich echt nicht wie und was du lernst oder wo du was lernst.

Die Methode heißt nicht umsonst onPause();
Wozu machst du dann ein finish(); rein?
Weißt du überhaupt was ein finish() tut und eine onPause()???

Lern erstmal die Grundlagen. Dann fange richtig an zu Programmieren.
So wird das nicht.


LG

— geändert am 05.03.2014, 14:17:55

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 14:20:57 via Website

Ich weis was das macht.(onPause = wenn die App im Hintergrund läuft, finish() schliest die App) ^^
Hatte mich verlesen. Warum den Timer prüfen?

Antworten
Michele
  • Forum-Beiträge: 1.525

05.03.2014, 14:30:46 via Website

Anscheint weißt du wohl nichts :D.

finish() schließt die derzeitige Activity und nicht die ganze App.
onPause() wird aufgerufen, wenn du die App nicht mehr im Vordergrund hast.

Siehe auch hier:
http://developer.android.com/reference/android/app/Activity.html


LG

— geändert am 05.03.2014, 14:31:30

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 14:32:57 via Website

Sry aus der Quelle wo ich das onfinish() her hatte stand es schliest die App.

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 14:49:53 via Website

Können wir zurück zum Thema kommen?
Hab jetzt so:
1public void onPause() {
2 super.onPause();
3 if (abspieler.isPlaying()) {
4 abspieler.stop();
5 }
6 Toast.makeText(getApplicationContext(), "Das Spiel wurde beendet.", Toast.LENGTH_SHORT).show();
7
8 System.exit(0);
9
10
11}

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

05.03.2014, 15:04:30 via Website

System.exit ist soweit Ich das weiß nicht unterstützt, genau dafür gibt es #finish(), da man in der onPause ist ist das aber nicht nötig da man ja bereits in einer Lifecycle Methode ist. Ich suche bei deinem bsp immer noch den Timer, ich sehe nur den abspieler, ansonsten musst du uns schon den abspieler genauer zeigen

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 15:05:28 via App

Der ist erstmal irrelevant.

— geändert am 05.03.2014, 15:06:17

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

05.03.2014, 15:19:05 via Website

Aber oben soll der relevante Code sein :lol:

Was die Methode da sonst macht ist einen Toast anzeigen, sehr relevant

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 15:22:50 via App

Der Abspieler?!

Antworten
Michele
  • Forum-Beiträge: 1.525

05.03.2014, 15:32:54 via Website

Komischerweise geht es hier laut Thema aber um deinen Timer :D.

Und so wie dein jetziger Code geschrieben ist, ist alles ok.
Würde nur abspieler.pause() machen anstatt abspieler.stop().


LG

Antworten
impjor
  • Forum-Beiträge: 1.793

05.03.2014, 16:51:03 via App

System.exit() ist generell zu vermeiden.

In der onPause solltest du aber auch nicht deine App beenden, alles nötige zum pausieren wird durch super.onPause() schon bewirkt. Nur den MediaPlayer/Timer/etc. musst du selber pausieren.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Flo

Antworten
Flo
  • Forum-Beiträge: 73

05.03.2014, 16:52:02 via App

oki :D

Antworten