私の問題
そのように初期化され、メソッドを呼び出してオブジェクトを更新するタイマーがあります。問題は、タイマーが起動するたびに LogCat で GC_CONCURRENT 出力を取得していることです。
11-01 11:56:43.042: D/dalvikvm(30950): GC_CONCURRENT freed 774K, 52% free 3303K/6791K, external 1763K/2129K, paused 3ms+4ms
これは、タスクと一緒にタイマーを初期化したものです。
if (CCTrackManager.timer == null)
CCTrackManager.timer = new Timer("TrackUpdate");
MyTimerTask task = new MyTimerTask();
CCTrackManager.timer.scheduleAtFixedRate(task, 0, 1000);
したがって、これは一度呼び出され、再度呼び出されることはありません (タイマーが停止して再起動されない限り)。
私の更新方法はそのように見えます。
public void addSecondToTrackDuration() {
this._currentRecordingTrack.setDuration(this._currentRecordingTrack.getDuration() + 1);
this.mListener.trackUpdated(this._currentRecordingTrack);
}
次に、このスレッドから UI スレッドへの値の取得を処理するために使用する Handler を次に示します。
//----------------------------------------------------------------------
// HANDLES THE UPDATE OF THE TRACK. NEEDS HANDLER BECAUSE THE TIMER WHICH CALLS THIS RUNS ON ANOTHER THREAD
//----------------------------------------------------------------------
static class UpdateTrackHandler extends Handler {
WeakReference<MainActivity> mActivity;
UpdateTrackHandler(MainActivity act) {
mActivity = new WeakReference<MainActivity>(act);
}
@Override
public void handleMessage(Message msg) {
TrackFragment tf = (TrackFragment) mActivity.get().getSupportFragmentManager().findFragmentByTag(RECORDING_TRACK_FRAG);
if (tf != null) {
tf.updateViewWithTrack((CCTrack)msg.obj);
}
}
}
UpdateTrackHandler mHandler = new UpdateTrackHandler(this);
//----------------------------------------------------------------------
// CALLED FROM CCTRACKMANAGER WHEN AN UPDATE OCCURS ON THE CURRENT RECORDING TRACK
//----------------------------------------------------------------------
public void trackUpdated(CCTrack track) {
Message msg = new Message();
msg.obj = track;
mHandler.sendMessage(msg);
}
これは問題ではないと思います。問題は、TextView をコメントアウトしたときに実際に更新しているフラグメントにあると思いますがthis.durationValueTxtView.setText("TIME");
、それはもう起こりません。
public void updateViewWithTrack(CCTrack track) {
this.durationValueTxtView.setText("TIME");
}
私の質問
ハンドラーの作成、タイマーの作成、タイマー タスクの作成、テキストビューの参照に関して何か不足していますか? なんでも?
前もって感謝します