私のアプリの 1 つでクラッシュ レポートに遭遇しましたが、これは私のコードでは決して起こらないように思われます...
java.lang.IllegalArgumentException
at java.util.Timer.schedule(Timer.java:461)
at com.pilot51.voicenotify.Service.onAccessibilityEvent(Service.java:177)
at android.accessibilityservice.AccessibilityService$IEventListenerWrapper.executeMessage(AccessibilityService.java:215)
at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:61)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
そのリビジョンに関連するコードは次のとおりです。
int delay = 0;
try {
delay = Integer.parseInt(Common.prefs.getString("ttsDelay", null));
} catch (NumberFormatException e) {}
if (delay > 0) {
final String msg = newMsg;
new Timer().schedule(new TimerTask() { // This is line 177
public void run() {
speak(msg, true);
}
}, delay * 1000);
}
完全なソース: https://github.com/pilot51/voicenotify/blob/v1.0.9.1/src/com/pilot51/voicenotify/Service.java
タイマー ソースを確認し、IAE が発生するのは の場合のみであることを確認しましたがdelay < 0
、にチェックを入れてくださいdelay > 0
。その上、入力タイプ/数字を無視する設計の悪いカスタム キーボードがない限り (それは可能ですか?)、ユーザーはテキスト フィールドに 0 ~ 9 の数字しか入力できず、マイナス記号やピリオドなどは入力できません。
クラッシュを再現することも、クラッシュが発生しているユーザーと通信することもできないため、デバッグすることはできません。レポートの相対的な数は、私が少し心配するのに十分な数です。