Code is the next:
Using java Syntax Highlighting
- public class SocketView extends Activity {
- private ImageView iv;
- private Button button;
- private Bitmap bitmap;
- private Handler handler;
- private Socket socket;
- private ObjectInputStream in;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- iv = (ImageView)findViewById(R.id.image_view);
- button = (Button)findViewById(R.id.button);
- handler = new Handler(){
- public void handleMessage(Message msg) {
- try{
- Bundle b = msg.getData();
- if(bitmap != null){
- bitmap.recycle();
- }
- Thread.sleep(100);
- bitmap = BitmapFactory.decodeByteArray(
- b.getByteArray("photogram"), 0,
- b.getByteArray("photogram").length);
- iv.setImageBitmap(bitmap);
- } catch (Exception ex) {
- Log.e("E", ex.toString());
- for(StackTraceElement s:ex.getStackTrace()){
- Log.e("E", s.toString());
- }
- }
- };
- };
- new Thread(){
- public void run(){
- try{
- socket = new Socket();
- socket.connect(new InetSocketAddress("X.X.X.X", N));
- InputStream is = socket.getInputStream();
- in = new ObjectInputStream(is);
- while(true){
- Message m = handler.obtainMessage();
- Bundle b = new Bundle();
- b.putByteArray("photogram", (byte[])in.readObject());
- m.setData(b);
- handler.sendMessage(m);
- ObjectOutputStream out = new ObjectOutputStream(
- socket.getOutputStream());
- out.writeObject("ACK");
- out.flush();
- Thread.sleep(300);
- System.gc();
- }
- } catch (Exception ex) {
- Log.e("E", ex.toString());
- for(StackTraceElement s:ex.getStackTrace()){
- Log.e("E", s.toString());
- }
- }
- }
- }.start();
- }
- }
Parsed in 0.040 seconds, using GeSHi 1.0.8.4
As you can see i invoke the garbage collector and do a recycle in the bitmap. The aplication goes well during 1-2 minutes. What can be happening?

