Guten Tag,
ich bin mir ziemlich sicher, ich übersehe hier gerade etwas, weiß allerdings nicht, was genau.
Ich benutze eine von AsyncTask erbende Klasse um die einen Counter anzuzeigen, welcher sich alle 500ms aktualisiert.
Das läuft auch, wenn ich jedoch die App minimiere und dann aus den Tasks neustarte, steht dort wieder der Standart Text und der AsyncTask scheint nicht mehr zu laufen. Auch ein
in der überschriebenen onResume Methode hilft hier nicht.
Habt ihr eine Ahnung, warum nicht?
Java
package com.mb.Happy;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.GregorianCalendar;
public class MainActivity extends Activity {
boolean run = true;
GregorianCalendar gc = new GregorianCalendar();
showCounter e ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gc.set(GregorianCalendar.DAY_OF_MONTH, 21);
gc.set(GregorianCalendar.HOUR_OF_DAY, 12);
gc.set(GregorianCalendar.MINUTE, 0);
gc.set(GregorianCalendar.SECOND, 0);
gc.set(GregorianCalendar.MONTH, GregorianCalendar.NOVEMBER);
setContentView(R.layout.activity_main);
((ImageView)findViewById(R.id.imageView)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = "http://www.amazon.de/Dauernd-Limitierte-Special-Edition-inklusive/dp/B00NFS6PRG/ref=sr_1_1?ie=UTF8&qid=1415221765&sr=8-1&keywords=herbert+gr%C3%B6nemeyer";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
e = new showCounter();
}
@Override
protected void onResume()
{
super.onResume();
run = false;
e = null;
e = new showCounter();
e.execute("");
}
@Override
protected void onStart()
{
super.onResume();
run = false;
e = null;
e = new showCounter();
e.execute("");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class showCounter extends AsyncTask<Object, String, String>{
@Override
protected String doInBackground(Object... params) {
long last = 0;
Log.i("AsyncTask", "Run");
run = true;
while(run)
{
if(System.currentTimeMillis()-last >500){
long difference = gc.getTimeInMillis() - System.currentTimeMillis();
GregorianCalendar c = new GregorianCalendar();
c.setTimeInMillis(difference);
String[] s = new String[]{formatNice(c.get(GregorianCalendar.DAY_OF_MONTH)) ,formatNice(c.get(GregorianCalendar.HOUR_OF_DAY)) ,formatNice(c.get(GregorianCalendar.MINUTE)) ,formatNice(c.get(GregorianCalendar.SECOND))};
publishProgress(s);
last = System.currentTimeMillis();
}
}
return null;
}
@Override
protected void onProgressUpdate(String... s)
{
((TextView)findViewById(R.id.tagZahl)).setText(s[0]);
((TextView)findViewById(R.id.stundeZahl)).setText(s[1]);
((TextView)findViewById(R.id.minutenZahl)).setText(s[2]);
((TextView)findViewById(R.id.sekundenZahl)).setText(s[3]);
}
}
public String formatNice(int i)
{
if(i<10 && i>-10)
return "0"+i;
return ""+i;
}
}
Alles anzeigen