我最近有一些崩溃,我没有在我的onStartCommand
方法中处理Intent==null
。通过Intent发送的值对我来说是必需的,并且只作为实例变量存储。我想确保这些值将被恢复并开始GoogleApiClient
。Android - STICKY_SERVICE重启流程和测试(空意图)
我无法通过adb
重新启动该服务或手动调用服务重新启动(如果你知道如何请把它写在你的答案adb shell am start/stopservice
我没有工作 - 没有找到服务)
服务文档:
...创建新的服务实例后;如果没有任何挂起的启动命令要传递给服务,它将被调用一个空意图对象,所以你必须小心检查这一点。
- 我是否理解正确的话,如果我说,我有必要的变量存储到
SharedPreferences
并开始GoogleApiClient
或做那些实例变量和GoogleApiClient
仍然存在? - 发生服务重启时发生了什么(正在调用
Service
方法)? - 如何测试飞机坠毁前用“重启”行为(自动,手动或通过
adb
工具)
代码:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// ...
// mGoogleApiClient created in onCreate() exists here
mGoogleApiClient.connect();
// Intent was null here
mActionInterval = intent.getLongExtra(EXTRA_ACTION_INTERVAL, EXTRA_ACTION_INTERVAL_DEFAULT);
mUpdateFrequency = intent.getLongExtra(EXTRA_UPDATE_FREQUENCY, EXTRA_UPDATE_FREQUENCY_DEFAULT);
LogUtils.v(LOG_TAG, "starting GPS Tracker with interval: " + mActionInterval +
" and update frequency: " + mUpdateFrequency);
return START_STICKY;
}