Appcelerator Titanium V8 Runtime удаляется, пока C2DM получает

Я успешно включил в свой проект модуль C2DM (Android Cloud to Device Messaging Framework) и был в состоянии успешно зарегистрироваться и получать push-уведомления Android. Однако я заметил, что время от времени, когда я отправляю уведомления, новое уведомление не отображается на устройстве. Сегодня я подключил свое устройство и использовал логарифм adb и заметил, что 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: [email protected]
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 была удалена. Есть ли кто-нибудь, кто может это подтвердить? Кроме того, есть ли обходной путь для этого, поскольку я хотел бы отображать уведомление, когда я его получаю?


person avivas    schedule 27.04.2012    source источник


Ответы (1)


Он отлично работает с Rhino Engine.

person Alex    schedule 27.05.2012