随便写两句
android编程使用消息, 网上经常看到这样的例子.
timer = new Timer();
final Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
...
}
};
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
Message mesasge = new Message();
mesasge.what = 1;
handler.sendMessage(mesasge);
}
}, 0, 10);
上面的例子中实际上存在着内存泄露,正确的写法应该是这样:
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
Message message = handler.obtainMessage(); //handler is an instance of type Handler
//Set fields of message
message.what = 1;
message.sendToTarget();
}
}, 0, 10);
timer = new Timer();
final Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
...
}
};
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
Message mesasge = new Message();
mesasge.what = 1;
handler.sendMessage(mesasge);
}
}, 0, 10);
上面的例子中实际上存在着内存泄露,正确的写法应该是这样:
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
Message message = handler.obtainMessage(); //handler is an instance of type Handler
//Set fields of message
message.what = 1;
message.sendToTarget();
}
}, 0, 10);
本文探讨了Android中使用Timer与Handler实现定时任务的方法,并指出常见的内存泄露问题及正确实践。通过对比两种消息发送方式,强调了使用obtainMessage方法的重要性。
310

被折叠的 条评论
为什么被折叠?



