2014-05-28 2 views
0

У меня есть класс GCMIntentService, который простирается от GCMBaseIntentService, в этом классе, в функции OnMessage, я хотел бы назвать AsyncHttpResponseHandler.But, когда я называю это,AsyncHttpResponseHandler не попадает в его функции в коммутаторе

/** 
* Method called on Receiving a new message from GCM server 
* */ 
@Override 
protected void onMessage(final Context context, Intent intent) { 

    if(aController == null) 
     aController = (ProjectApplication) context.getApplicationContext();//for the json test use context.getapp 

    Log.i(TAG, "Received message"); 
    String message = intent.getExtras().getString(ProjectExtras.EXTRA_MESSAGE); 

    aController.displayMessageOnScreen(context, message); 

    JSONObject json; 
    String mMessage=""; 
    int ID=1; 
    int ACTION=0; 

    if(message!=null){ 
     try { 
      json= new JSONObject(message); 
      mMessage= json.optString("Message"); 
      ID=json.optInt("u"); 
      ACTION=json.getInt("t"); 

     } catch (JSONException e) { 
      Log.e("MESSAGE", "ERROR"); 
      e.printStackTrace(); 
     } 
    } 

    final int _ID =ID; 
    final int _ACTION =ACTION; 
    final String _mMessage =mMessage; 

    getIntent(context, _ID, _ACTION,_mMessage); 
} 

это моя функция, которая имеет SmartSyncManager.getInstance (context) .getNews, в этой функции я использую AsyncHttpResponseHandler для получения данных из веб-службы и обновления моей локальной базы данных.

private static void getIntent(final Context context, final int id, final int action , final String mMessage) { 
    final Intent intent = new Intent(context, ProjectMainActivity.class); 
    Log.d("IntentServiceId",""+ id); 
    Log.d("IntentServiceAction",""+ action); 

    switch (action) { 
    case HABERLER: 
     //intent = new Intent(context , NewsActivity.class); 
     final Intent newsIntent = new Intent(context, NewsDetailActivity.class); 

      Handler h = new Handler(Looper.getMainLooper()); 
      h.post(new Runnable() { 
       @Override 
       public void run() { 
        SmartSyncManager.getInstance(context).getNews(60*30*1000, Policy.LOCAL_IF_FAILS, new CompanyUpdateCallBack<CompanyDataObject>() { 

         @Override 
         public void onStart() { 
          Log.e("GCMIntService", "onStart getNews"); 
         } 

         @Override 
         public void onSuccess(List<CompanyDataObject> objects) { 
          CompanyDataObject object =SmartSyncDataBaseHelper.getInstance(context).getNewsById(id); 
          if(object!=null){ 
           newsIntent.putExtra(ProjectExtras.EXTRA_Company_MODULE, Constant.MODULE_NEWS); 
           newsIntent.putExtra(ProjectExtras.EXTRA_Company_DATA_OBJECT,object); 
           intent.setClass(context, NewsDetailActivity.class); 

          } 
          generateNotification(context, mMessage,id,intent); 
          Log.e("GCMIntService", "OnSuccess getNews"); 
         } 

         @Override 
         public void onFail(List<IKOLDataObject> objects) { 
          Log.e("GCMIntService", "OnFail getNews"); 
         } 

         @Override 
         public void onFinish() { 
          Log.e("GCMIntService", "onFinish getNews"); 
         }}); 
       } 
      }); 


     break; 

он никогда не попадает в какой-либо из функций AsyncHttpResponseHandler как в случае успеха или потерпеть неудачу. нет даже если старт. Тем не менее, он отлично работает в классах занятий. Может быть, потому, что он в коммутаторе? Я попытался использовать runnable, чтобы приложение ожидало его, но оно не сработало.

Как я могу сделать AsyncHttpResponseHandler (SmartSyncManager.getInstance (context) .getSomething) работать в GCMIntentService?

ответ

0

Я просто перемещаю все содержимое функции getIntent в onMessage и его работу отлично. а также изменил

if(object!=null){ 
    newsIntent.putExtra(ProjectExtras.EXTRA_Company_MODULE, Constant.MODULE_NEWS); 
    newsIntent.putExtra(ProjectExtras.EXTRA_Company_DATA_OBJECT,object); 
    intent.setClass(context, NewsDetailActivity.class); 
} 
generateNotification(context, mMessage,id,intent); 

в

if(object!=null){ 
newsIntent.putExtra(ProjectExtras.EXTRA_Company_MODULE, Constant.MODULE_NEWS); 
newsIntent.putExtra(ProjectExtras.EXTRA_Company_DATA_OBJECT,object); 
intent.setClass(context, NewsDetailActivity.class); 
generateNotification(context, mMessage,id,intent); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^