У меня есть класс 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?