2017-02-28 75 views
0

我最近有一些崩溃,我没有在我的onStartCommand方法中处理Intent==null。通过Intent发送的值对我来说是必需的,并且只作为实例变量存储。我想确保这些值将被恢复并开始GoogleApiClientAndroid - STICKY_SERVICE重启流程和测试(空意图)

我无法通过adb重新启动该服务或手动调用服务重新启动(如果你知道如何请把它写在你的答案adb shell am start/stopservice我没有工作 - 没有找到服务)

服务文档:

...创建新的服务实例后;如果没有任何挂起的启动命令要传递给服务,它将被调用一个空意图对象,所以你必须小心检查这一点。

  1. 我是否理解正确的话,如果我说,我有必要的变量存储到SharedPreferences并开始GoogleApiClient或做那些实例变量和GoogleApiClient仍然存在?
  2. 发生服务重启时发生了什么(正在调用Service方法)?
  3. 如何测试飞机坠毁前用“重启”行为(自动,手动或通过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; 
} 

回答

0

我没有一个完整的答案,因为我是现在就开始工作。

但是,我可以为您提供adb命令来测试服务启动,停止和重新启动方案。

ADB命令,发送一个意图: 亚行外壳AM广播-a com.example.demo.action.LAUNCH

在我的解决方案我有启动侦听器和停止的意图。您可以简单地尝试通过立即停止和启动来重新启动服务。

至于变量保存和重新启动的确切机制,我还没有找到解释信息,而不是正确的文档,我努力正确地理解。