У моего приложения есть экран, который обновляется каждую секунду в AsyncTask:
class BarRefresh extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// doSomething();
while(redraw){
for(int i = 0; i < c.sets.size(); i++)
{
vals[i] = c.sets.get(i).getLast();
}
graph.updateVals(vals);
graph.postInvalidate();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(isCancelled()){
break;
}
}
return null;
}
}
Щелчок по одному из объектов открывает новое действие с параметром:
@Override
public boolean onTouch(View v, MotionEvent ev) {
// TODO Auto-generated method stub
float[] coords = new float[2];
coords[0] = ev.getX();
coords[1] = ev.getY();
int set = 0;
for(int i = 0; i < graph.values.length; i++){
if(graph.rects[i].contains(coords[0], coords[1]))
{
redraw = false;
Bundle chosen = new Bundle();
chosen.putInt("set", i);
Intent bb = new Intent(GraphTestActivity.this, LineGraphActivity.class);
bb.putExtras(chosen);
startActivity(bb);
// set = i;
}
}
//Toast t = Toast.makeText(GraphTestActivity.this, "KLIKNIETO " + set, Toast.LENGTH_SHORT);
//t.show();
return false;
}
Вновый конструктор активности выглядит так:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Bundle pick = getIntent().getExtras();
setNr = pick.getInt("set");
c = Common.getInstance();
set = c.sets.get(setNr);
graph = new LineGraph(LineGraphActivity.this, set);
setContentView(graph);
}
Вот где все становится странным.На эмуляторе все работает нормально (приложение на 2.1 API, как и на эмуляторе), но когда я загружаю его на свой телефон, одновременно открывается пять или более экземпляров второго действия, и мне приходится нажимать несколько раз кнопку возвратараз, чтобы вернуться к исходному экрану.
Мой телефон - Samsung i5700 Spica с А 2.3.7 (Cyanogen 7.2 NIGHTLY alpha)