J'ai le code suivant qui fonctionne parfaitement pour mettre continuellement à jour l'écran avec un bitmap.Android: l'interface utilisateur se verrouille lorsque le menu est frappé
public class render extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(new myView(this));
}
static {
System.loadLibrary("render");
}
}
class myView extends View
{
private int[] mColors;
private Bitmap mBitmap;
private static native int[] renderBitmap();
public myView(Context context)
{
super(context);
}
@Override
protected void onDraw(Canvas canvas)
{
mColors = renderBitmap();
mBitmap = Bitmap.createBitmap(mColors, 64, 64, Bitmap.Config.ARGB_8888);
mBitmap = Bitmap.createScaledBitmap(mBitmap, 256, 256, false);
canvas.drawBitmap(mBitmap, 8, 8, null);
// force a redraw
invalidate();
}
}
Le problème est que j'ai depuis ajouté un menu d'options. Lorsque j'appuie sur la touche de menu, mon application se bloque, je devine parce que le fil de l'interface utilisateur est bloqué. Quelle est la meilleure façon de gérer cela?
Merci d'avance.
Edit: J'ai essayé d'utiliser AsyncTask sans succès:
public class render extends Activity
{
public Bitmap mBitmap;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(new myView(this));
}
private static native int[] renderBitmap();
static
{
System.loadLibrary("render");
}
private class renderTask extends AsyncTask<Void, Void, Bitmap>
{
@Override
protected Bitmap doInBackground(Void... params)
{
int[] mColors;
mColors = renderBitmap();
mBitmap = Bitmap.createBitmap(mColors, 64, 64, Bitmap.Config.ARGB_8888);
mBitmap = Bitmap.createScaledBitmap(mBitmap, 256, 256, false);
return mBitmap;
}
@Override
protected void onPostExecute(Bitmap result)
{
mBitmap = result;
}
}
class myView extends View
{
public myView(Context context)
{
super(context);
}
@Override
protected void onDraw(Canvas canvas)
{
new renderTask().execute();
canvas.drawBitmap(mBitmap, 112, 8, null);
// force a redraw
//invalidate();
}
}
}
Eh bien, vous devez nous montrer ce que vous faites lorsque vous créez/afficher le menu – Falmarri