私はアンドロイドを使用しています。 最近、私は再送データをコーディングしています。 が発生しましたが、不正な状態例外が発生しました。タイマーがキャンセルされました。タイマーはキャンセルされたエラーをどのように処理できますか?
これは私のlogcatです:
java.lang.RuntimeException: Unable to start receiver kr.co.iosystem.blackeyeonandroid.util.NetworkChangeReceiver: java.lang.IllegalStateException: Timer was canceled
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2414)
at android.app.ActivityThread.access$1700(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Timer was canceled
at java.util.Timer.scheduleImpl(Timer.java:561)
at java.util.Timer.schedule(Timer.java:459)
at kr.co.iosystem.blackeyeonandroid.sender.DataSender.sendPicData(DataSender.java:251)
at kr.co.iosystem.blackeyeonandroid.sender.DataSender.restart(DataSender.java:425)
at kr.co.iosystem.blackeyeonandroid.sender.DataSender.update(DataSender.java:337)
at java.util.Observable.notifyObservers(Observable.java:138)
at kr.co.iosystem.blackeyeonandroid.util.AutoObservable.notifyObservers(AutoObservable.java:13)
at kr.co.iosystem.blackeyeonandroid.main.Agency.notifyMessage(Agency.java:88)
at kr.co.iosystem.blackeyeonandroid.util.NetworkChangeReceiver.onReceive(NetworkChangeReceiver.java:200)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2407)
at android.app.ActivityThread.access$1700(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
私は、これは例外が
private Timer mTimer = null; //global variable
@Override
public void run() {
mTimer = new Timer();
...
}
@Override
public void update(){
if (this.senderState == SenderState.STOPPED) {
this.mTimer.cancel();
this.restart(); //Timer exception ...
}
を発生している部分は私が間違っているつもりです場所を知ることができていると思いますか?
キャンセルされたタイマーを再起動することはできません。あなたは新しいものを作る必要があります。 –
@GabeSechanあなたのアドバイスはキャンセルを使用しないで、同じ方法で再起動しますか? –
DataSenderオブジェクトでrestartを使用できます。しかし、同じものを開始するだけではなく、新しいTimerオブジェクトを作成する必要があります。 –