Я использую android. Недавно я кодировал данные пересылки. , но произошел незаконный запуск. Таймер был отменен.Как я могу обработать таймер была отменена ошибка?
Это мой 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. Но вам нужно создать новый объект Timer, а не просто запустить тот же самый. –