0

我已经成功地在我的项目中包含了一个C2DM 模块(Android 的云到设备消息传递框架),并且能够成功注册和接收 Android 推送通知。但是,我注意到每隔一段时间,当我发送通知时,新通知不会显示在设备上。今天,我插入我的设备并使用 adb logcat 并注意到 IntentService[c2dmBaseReceiver] 实际上被触发并且它收到了我发送的消息,但是回调函数不是因为 V8 运行时已被释放(请参阅以下行来自日志猫)

D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [369956,441456] Message received
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [1,441457] Message key: message value: This is a test notification
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [0,441457] Message key: title value: myAppName
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [2,441459] Message key: tickerText value: Notification Ticker
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [1,441460] Message key: from value: abrahamvivas@gmail.com
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [0,441460] Message key: collapse_key value: myApp Alert
W/V8Function( 1069): Runtime disposed, cannot call function

这是我的回调

callback:function(e)
{
    Ti.API.info('JS message event: ' + JSON.stringify(e.data));
    var intent = Ti.Android.createIntent({
        action: Ti.Android.ACTION_MAIN,
        flags: Ti.Android.FLAG_ACTIVITY_NEW_TASK | Ti.Android.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED,
        className: 'com.avivas.myApp.myAppActivity',
        packageName: 'com.avivas.myApp'
    });

    intent.addCategory(Ti.Android.CATEGORY_LAUNCHER); 

    var pending = Ti.Android.createPendingIntent({
        activity: Ti.Android.currentActivity,
        intent: intent,
        type: Ti.Android.PENDING_INTENT_FOR_ACTIVITY,
    });

    var notification = Ti.Android.createNotification({
        contentIntent: pending,
        contentTitle: e.data.title,
        contentText: e.data.message,
        tickerText: e.data.tickerText
    });

    Ti.Android.NotificationManager.notify(1, notification);

    Titanium.Media.vibrate([0,300, 100, 300]);
}

我假设因为来自 c2dm 的回调函数在 javascript 中,所以它无法执行,因为 V8 运行时已被释放。有没有人可以证实这一点?此外,是否有任何解决方法,因为我想在收到通知时显示通知?

4

1 回答 1

0

它适用于Rhino引擎。

于 2012-05-27T09:35:29.840 回答