Je construis une application qui va continuellement obtenir des captures d'écran de mon écran d'ordinateur portable et le transférer vers mon application android mais il y a un problème dans la boucle while, quand je mets une boucle pour mon programme fonctionne mais comme il va jusqu'à l'infini ou je le remplace par infini tout en boucle mon code suspend tous les threads et l'application crash duo problème d'allocation de mémoire, s'il vous plaît me suggérer d'exécuter mon code infini fois pour qu'il y ait des captures d'écran continues.Tous les threads sont suspendus
Merci.
Voici mon code
public class ScreenActivity extends AppCompatActivity {
ImageView img;
int width,height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen);
img=(ImageView)findViewById(R.id.imageView);
Display display = getWindowManager().getDefaultDisplay();
width = display.getWidth();
height = display.getHeight();
// while (true)
for (int i=0;i<100;i++)
new GetImg().execute();
}
Bitmap imgscr;
public class GetImg extends AsyncTask<Object,Void,Bitmap> {
@Override
protected Bitmap doInBackground(Object[] params) {
Socket client= null;
try {
client = new Socket("192.168.1.5",6767);
InputStream in=client.getInputStream();
imgscr=Bitmap.createScaledBitmap(BitmapFactory.decodeStream(in), width, height, false);
} catch (Exception e) {
e.printStackTrace();
}
return imgscr;
}
@Override
protected void onPostExecute(Bitmap bm)
{
img.setImageBitmap(bm);
}
}
}
Vous ne pouvez pas faire une boucle infinie sur un fil principal. Déplacez votre boucle hors de 'onCreate'. Notez également que vous définissez toutes les images en même temps car vous lancez 100 (ou infinies) AsyncTasks, qui s'exécutent en arrière-plan. Est-ce que c'est ce que tu veux faire? Je suppose que vous voulez prendre les images les unes après les autres puisque vous écrasez le même ImageView. – m0skit0