如果服务正在运行,请检查接收器

时间:2012-12-13 15:25:51

标签: android service broadcastreceiver

我创建了一个使用Android Cloud to Device Messaging的应用程序,因为我使用此应用程序从正确的图标启动它可以正常工作。我发现的问题是在设备启动后。启动后,接收器正确启动并正确启动我想要使用的服务,检查它是否正在运行以执行某些任务并最终启动另一项服务。

为实现这一目标,我做到了这一点:

清单上的

         <receiver android:name=".C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND">             
          <!-- Receive the actual message -->
          <intent-filter>
              <action android:name="com.google.android.c2dm.intent.RECEIVE" />
              <category android:name="com.myapp.app" />
          </intent-filter>
          <!-- Receive the registration id -->
          <intent-filter>
              <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
              <category android:name="com.myapp.app" />
          </intent-filter>
                 <intent-filter>
                <action   android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="com.myapp.app" />
            </intent-filter> 
     </receiver>

在我的接收器中:

        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {

        Intent NewIntent = new Intent(context, MyService.class);
        context.startService(NewIntent);
        Log.i("C2DMReceiver", "MyService started");
    }

然后onMessage收到接收方必须检查MyService是否正在运行。为此,我在MyService中写了这个:

    // Use activity in C2DMReceiver class
public static Service getCurrentService() {
    return curService;
}

所以要检查接收器我这样做:

if (MyService.getCurrentService != null){
        //DO ELSE
    }

问题是,即使服务真正在运行,这个布尔条件总是为假。

为什么?

0 个答案:

没有答案