1

(拡張)をAndroid Wear使用するためのウォッチフェイスを開発しています。WatchFace APICanvasWatchFaceService

ここのコードを使用して、毎秒コードを実行するティッカーを作成しました。

次の問題が発生しています。時々、この例外でサービスがクラッシュします。どこから来たのかわかりません。手がかりがあれば、追加のコードを投稿します。

01-06 11:22:00.247  12965-12965/com.my.package E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.my.package, PID: 12965
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.PowerManager$WakeLock.acquire()' on a null object reference
        at android.support.wearable.watchface.WatchFaceService$Engine.onCommand(WatchFaceService.java:201)
        at android.service.wallpaper.WallpaperService$Engine.doCommand(WallpaperService.java:977)
        at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:1191)
        at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:37)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

このクラッシュの後、ウォッチフェイスが機能しなくなり、再び開始するには、別のウォッチフェイスを選択してから、もう一度選択する必要があるため、完全なショーストッパーです!

4

2 に答える 2

0

リンクしたコードには、点線で示されているいくつかの重要な部分が欠けています。つまり、更新レートを定義しましたか?

private static final long INTERACTIVE_UPDATE_RATE_MS = TimeUnit.SECONDS.toMillis(1);

完全に実装され、うまく機能します。コード サンプルの AnalogWatchFaceService を参照してください: ウェアラブル/ウォッチフェイス フェイス。

于 2015-01-06T14:48:11.147 に答える