Android 应用程序关闭时IntentService不调用api
我已经创建了一个Android 应用程序关闭时IntentService不调用api,android,service,broadcastreceiver,android-service,android-service-binding,Android,Service,Broadcastreceiver,Android Service,Android Service Binding,我已经创建了一个IntentService来向服务器发送本地数据 我从两个不同的广播接收器调用此服务。 1) 当从连接更改接收器时。 2) 上午12点与报警管理器 当应用程序打开时,它可以正常工作。 但当应用程序关闭时不工作 下面是我的IntentService代码 public class ExpertEventService extends IntentService { @Inject Context context; @Inject Realm realm; public Expert
IntentService
来向服务器发送本地数据
我从两个不同的广播接收器
调用此服务
。
1) 当从连接更改接收器时。
2) 上午12点与报警管理器
当应用程序打开时,它可以正常工作。
但当应用程序关闭时不工作
下面是我的IntentService
代码
public class ExpertEventService extends IntentService {
@Inject
Context context;
@Inject
Realm realm;
public ExpertEventService() {
super("ExpertEventService");
Log.e("expertEvent", "service constructor");
// Toothpick.inject(this, Toothpick.openScope(Constants.APPSCOPENAME));
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
Toothpick.inject(this, Toothpick.openScope(Constants.APPSCOPENAME));
Log.e("expertEvent", "service started");
RealmResults<AskExpertEventModel> results = realm.where(AskExpertEventModel.class).findAll();
List<AskExpertEventModel> requestList = realm.copyFromRealm(results);
String language = realm.where(LanguageStore.class).equalTo(LanguageStore.ISSELECTED, true).findAll().first().getCode();
String appInstanceCode = Preferences.getAppInstanceCode(context);
String token = Preferences.getToken(context);
Api.userManagement(context).expertEvent(appInstanceCode, token, language, requestList)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe(new ApiSuccess<EventResponse>() {
@Override
public void call(EventResponse eventResponse) {
Log.e("expertEvent", eventResponse.getStatus());
if (eventResponse.getStatus().equalsIgnoreCase(Constants.Status.STATUS_SUCCESS)) {
Log.e("expertEvent", "sucess");
new RealmDB().deleteEvent();;
}
}
}, new ApiFail() {
@Override
public void httpStatus(HttpErrorResponse response) {
Log.e("expertEvent", response.getError());
}
@Override
public void noNetworkError() {
Log.e("expertEvent", "no network connection");
}
@Override
public void unknownError(Throwable e) {
Log.e("expertEvent", e.getMessage());
}
});
}
}
2) 上午12点执行
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//call service
Log.e("alarmreceiver","in alarm receiver");
Intent serviceIntent = new Intent(context, ExpertEventService.class);
context.startService(serviceIntent);
}
}
请共享开始ExpertEventService代码(BroadcastReceivers)
IntentService
在执行完intent
后停止。您需要能够在后台持续运行的服务
,或者在需要时使用BroadcastReceiver
启动IntentService
。添加了从广播接收器调用code的服务@JRameshyes我随时从广播接收器调用intent服务@Michal_196;您是否在安卓O上测试?请共享start ExpertEventService代码(BroadcastReceivers)IntentService
在执行完intent
后停止。您需要能够在后台持续运行的服务
,或者在需要时使用BroadcastReceiver
启动IntentService
。添加的服务称为“来自广播接收器的代码”@JRameshyes我会随时从广播接收器调用intent服务@Michal_196;您在安卓O上测试吗?
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//call service
Log.e("alarmreceiver","in alarm receiver");
Intent serviceIntent = new Intent(context, ExpertEventService.class);
context.startService(serviceIntent);
}
}