自己項目有個傳感器傳數據,需要一直監聽,刷新頁面操作,一直刷新頁面纔出現內存泄露
考進項目裏面直接用
方法
private Runnable timerRun = new Runnable() {
@Override
public void run() {
mOperationHandler.sendEmptyMessage(1);
}
};
private OperationHandler mOperationHandler = new OperationHandler(new WeakReference
<>(this));
/**
* 執行定時任務固定數量線程池
*/
private ScheduledExecutorService timerThreads = Executors.newScheduledThreadPool(1);
timerThreads.scheduleAtFixedRate(timerRun, 1500, 100, TimeUnit.MILLISECONDS);
private static class OperationHandler extends Handler {
WeakReference<OperationActivity> mWeakReference;
OperationHandler(WeakReference<OperationActivity> weakReference) {
this.mWeakReference = weakReference;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
OperationActivity activity = mWeakReference.get();
if (activity != null) {
if (msg.what == 1) {
activity._handleWeightChanged();
自己做頁面的操作
}
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
timerThreads.shutdownNow();
mOperationHandler.removeCallbacksAndMessages(null);
}