如何在android上始终保持唤醒GcmListenerService?

时间:2016-01-21 22:04:08

标签: android google-cloud-messaging

我的问题是我需要我的应用程序总是醒​​着才能收到通知,因为我想创建一个像whatsapp这样的聊天应用程序,但是当应用程序关闭时,通知不起作用,我已阅读http://developer.android.com/intl/es/guide/components/services.htmlhttp://developer.android.com/intl/es/guide/components/processes-and-threads.html并且我认为如果我在GcmListenerService上使用android:process属性创建了其他进程,我可以保持服务但不起作用

我认为的另一种方式是从GcmListenerService覆盖onStartCommand方法并返回START_STICKY常量

  @Override
public int onStartCommand(Intent intent, int flags, int startId) {

    return START_STICKY;
}

但这种方式的问题是GcmListenerService具有最终的onStartCommand方法,所以我无法覆盖该方法

所以关于android文档有没有解决这个问题的方法?

我能找到的唯一一个解决方案就是设置我的手机,之后再去节电---->受保护的应用程序和检查我的应用程序,以便即使我的应用程序关闭时我的应用程序仍然可用

所以任何人都有解决这个问题的方法吗? 谢谢

编辑#2

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="schan.main"
    >
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17"/>
    <permission android:name="schan.main.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="schan.main.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.Schan"        >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver
            android:name="com.google.android.gms.gcm.GcmReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />

                <category android:name="schan.main" />
            </intent-filter>
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        </receiver>
        <service
            android:name="schan.main.MyGcmListenerService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>
        <service
            android:name="schan.main.MyInstanceIDListenerService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID" />
            </intent-filter>
        </service>
        <service
            android:name="schan.main.RegistrationIntentService"
            android:exported="false">
        </service>
        <activity
            android:name=".LoginActivity"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/login"
            android:parentActivityName=".MainActivity"
            android:theme="@style/Theme.Schan" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="schan.main.MainActivity" />
        </activity>
        <activity
            android:name=".SigupActivity"
            android:label="@string/joinus"
            android:parentActivityName=".MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="schan.main.MainActivity" />
        </activity>
        <activity
            android:name=".Alert"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:label="@string/title_activity_alert_dialog" >
        </activity>
    </application>
</manifest>

更新

我发现了我的真正问题,就是这个how can i put this configuration on my huawei cellphone?

1 个答案:

答案 0 :(得分:0)

这就是广播接收机要做的事情。你可能忘记了或者与接收器有关的地方不匹配,但你没有提供足够的代码,所以很难说清楚。

我还建议您尝试缩小您所面临的问题。你不能假设手机设置是最后的解决方案。 Android和谷歌为您开发了一个很棒的框架,所以使用它......