小编use*_*926的帖子

某些设备在几小时后收到Gcm通知

我正在尝试使用gcm通知.我的服务器代码工作正常,我作为确认获得成功.

问题是通知正在正确发送:

1)在大多数设备中,即时接收通知.测试谷歌nexus,索尼手机.

2)其他设备也在接收通知但几小时后.是的,几小时.一些手机在Karbonn,Micromax上测试过.

注意:

所有设备都连接到同一个wifi,因此网络连接不是问题.在服务器端使用php; 关于这个主题有几个未解答的问题.我现在列出其中一些:

gcm通知不适用于某些设备,如micromax

一台设备无法接收推送通知(GCM)

使用GCM推送通知延迟

其他有类似问题的人也会附上您的问题.

整改失败的审判:

在完成几个问题后,我也对代码进行了更改,开发人员发现了解决方案,例如从中删除这行代码 onHandleIntent()

GcmBroadcastReceiver.completeWakefulIntent(intent);
Run Code Online (Sandbox Code Playgroud)

或者将delay_while_ideal值更改为true/false服务器代码.

或者单独提及接收器和注册意图过滤器

<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.nothing.gcmclient" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.nothing.gcmclient" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

代码:Android.manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nothing.gcmclient"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="22" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <permission
        android:name="com.nothing.gcmclient.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.nothing.gcmclient.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.nothing.gcmclient.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"></uses-permission> …
Run Code Online (Sandbox Code Playgroud)

google-cloud-messaging

13
推荐指数
2
解决办法
1311
查看次数

了解从HashSet生成的流中元素的顺序

我读了这篇Java 8官方文档:

流可能有也可能没有已定义的遭遇顺序.流是否具有遭遇顺序取决于源和中间操作.某些流源(例如List或数组)本质上是有序的,而其他流(例如HashSet)则不是.
如果订购了流,则在相同的源上重复执行相同的流管道将产生相同的结果; 如果没有订购,重复执行可能会产生不同的结果.

试图通过此代码了解上述行为

public class StreamOrderValidator
{
    public static void main( String[] args )
    {
        String[] colors=new String[] {"red","green","blue","orange"};
        List<String> colorsList=Arrays.asList(colors);

        HashSet<String> colorsSet=new HashSet<>();
        colorsSet.addAll(colorsList);
        System.out.println(colorsSet);            // [red, orange, green, blue]

        List<String> processedColorsSet = processStream(colorsSet.stream());
        System.out.println(processedColorsSet);   // [RED, ORANGE, GREEN, BLUE]
    }

    private static List<String> processStream(Stream<String> colorStream) {
        List<String> processedColorsList = colorStream.filter(s->s.length()<=6).
                map(String::toUpperCase).collect(Collectors.toList());
        return processedColorsList;
    }
}
Run Code Online (Sandbox Code Playgroud)

我多次运行此代码,结果流中元素的顺序始终相同(显示为注释).我无法弄清楚这是如何证明以上引用的文字"订单不被保留为无序集合".

我肯定误解了javadocs提取的文本.

java hashset java-8 java-stream

7
推荐指数
1
解决办法
331
查看次数

扩展类同步方法锁定

假设这段代码

class A
{
    public synchronized void methodA()
    {
        // ...
    }
}

class B extends A
{
    @Override
    public synchronized void methodA()
    {
        // ...
        super.methodA();
    }
}
Run Code Online (Sandbox Code Playgroud)

什么锁应该被任何线程,如果它想通过访问B类和超A级的了methodA功能了methodA被收购super.methodA()

java concurrency multithreading

5
推荐指数
1
解决办法
651
查看次数

前缀和后缀运算符java

我在java中尝试一元postfix和前缀运算符

这是代码

int a=10;
Run Code Online (Sandbox Code Playgroud)

这行代码不会产生编译时错误

System.out.println(a+++ a +++a);   
Run Code Online (Sandbox Code Playgroud)

但这条线确实如此

System.out.println(a++ +++a);
Run Code Online (Sandbox Code Playgroud)

而这条线甚至没有

System.out.println(a+++ ++a);
Run Code Online (Sandbox Code Playgroud)

我无法理解编译器如何解释这些查询的模式.

java operators prefix-operator postfix-operator

5
推荐指数
1
解决办法
327
查看次数

没有生成arg方法编译器错误

这是我的代码:

public class XYZ {

    public static void overLoaded(Object a) {
        System.out.println("IN OBJECT");
    }

    public static void main(String[] args) {
        overLoaded();
    }
}
Run Code Online (Sandbox Code Playgroud)

我期望编译时错误,因为没有arg方法,而是输出结果是IN OBJECT.

请解释输出.

java oop overloading

0
推荐指数
1
解决办法
64
查看次数

将Integer添加到String的通用ArrayList时编译时错误

我知道这个问题之前已被多次询问过,但我正在寻找基于类型擦除的答案.

为什么编译器在添加时Integer会出错ArrayList<String>?我希望通过类型擦除和add方法的字节码来理解这一点ArrayList.

java generics collections arraylist

0
推荐指数
1
解决办法
831
查看次数

c char到int指针

#include<stdio.h>

int main(void)    
{
    int arr[3] = {2, 3, 4};
    char *p;
    p = (char*)arr;
    printf("%d", *(int*)(p+1));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在指针上做这个问题.我期望输出是一些垃圾值,因为从char*转换为int*但输出总是50331648,这很奇怪.请解释

编辑:我在某些网站上看到了这个输出问题,所以需要根据给定的指令输出

c pointers casting

0
推荐指数
1
解决办法
163
查看次数