我想繪製圖表每10秒。下面的代碼結構應該清楚。問題是:
我不能在內部類PlotHandler中使用外部類成員sDtdChart,因爲內部類是靜態的。我該怎麼辦?
如果不是靜態的,我得到警告:這個Handler類應該是靜態的或者可能發生泄漏。
謝謝。
public class MainActivity extends Activity {
Timer timer = new Timer();
ScatterChart sDtdChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer.schedule(task, 0, 10 * 1000);
}
// plot chart
TimerTask task = new TimerTask() {
public void run() {
Message msg = new Message();
msg.what = 1;
plotHandler.sendMessage(msg);
}
};
Handler plotHandler = new PlotHandler();
private static class PlotHandler extends Handler {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
plotChart();
break;
}
super.handleMessage(msg);
}
void plotChart() {
// it says non-static field cannot be referenced in a static context
sDtdChart = (ScatterChart) findViewById(R.id.chartDtd);
sDtdChart.setDescription("dtd");
sDtdChart.setData(xxxxx);
sDtdChart.invalidate();
}
}
爲什麼要在活動中保留一個靜態內部類? – Shaishav
我不想,但如果不是靜態的,我得到了一個警告泄漏可能會發生,我很害怕。 – caibirdcnb
使您正在使用的成員靜態'靜態ScatterChart sDtdChart;' –