我的moto 360上运行了Activity
,此活动在按下Service
后开始Button
。服务运行得很好,但是......一旦我将手表放入充电器,我的应用程序崩溃了,给出了以下信息:
attempt to invoke virtual method 'service.getAcceleration()' on a null object reference.
事情是,活动和服务在"正常使用"上工作得很好。但是一旦我将我的moto 360放在充电垫上,活动可见,我得到一个" instacrash"有一条类似上面的消息。
PS:我的服务已启动并绑定,引用由service
变量保存,我每隔N
毫秒使用{{1}读取数据}}
编辑:以下完整堆栈。
Handler
错误行:
01-12 01:13:16.693: E/AndroidRuntime(19078): FATAL EXCEPTION: main
01-12 01:13:16.693: E/AndroidRuntime(19078): Process: net.mauker.home_ecare, PID: 19078
01-12 01:13:16.693: E/AndroidRuntime(19078): java.lang.NullPointerException: Attempt to invoke interface method 'double net.mauker.home_ecare.services.AccWatchdogInterface.getAcceleration()' on a null object reference
01-12 01:13:16.693: E/AndroidRuntime(19078): at net.mauker.home_ecare.activity.MainActivity.updateData(MainActivity.java:102)
01-12 01:13:16.693: E/AndroidRuntime(19078): at net.mauker.home_ecare.activity.MainActivity.access$000(MainActivity.java:22)
01-12 01:13:16.693: E/AndroidRuntime(19078): at net.mauker.home_ecare.activity.MainActivity$1.run(MainActivity.java:39)
01-12 01:13:16.693: E/AndroidRuntime(19078): at android.os.Handler.handleCallback(Handler.java:739)
01-12 01:13:16.693: E/AndroidRuntime(19078): at android.os.Handler.dispatchMessage(Handler.java:95)
01-12 01:13:16.693: E/AndroidRuntime(19078): at android.os.Looper.loop(Looper.java:135)
01-12 01:13:16.693: E/AndroidRuntime(19078): at android.app.ActivityThread.main(ActivityThread.java:5254)
01-12 01:13:16.693: E/AndroidRuntime(19078): at java.lang.reflect.Method.invoke(Native Method)
01-12 01:13:16.693: E/AndroidRuntime(19078): at java.lang.reflect.Method.invoke(Method.java:372)
01-12 01:13:16.693: E/AndroidRuntime(19078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
01-12 01:13:16.693: E/AndroidRuntime(19078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我在这里获得double acc = service.getAcceleration();
活页夹:
Service
我可以使这个问题更加通用。插上充电器后,Wear Activity生命周期会发生什么?
编辑: private AccWatchdogInterface service;
//...
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
this.service = ((AccWatchdogBinder) service).getService();
mHandler.post(runnable);
}
在我将磨损装入充电器的那一刻就被杀死了。仍然不知道为什么。如果我不这样做,它不会很快被杀死。
我检查了Service
并且它停止了崩溃。但我的null
不应该被杀死,我想知道为什么它会在充电器上发生(生命周期问题?)。