Мое приложение использует службу Android, в которой
Я создаю модифицированный экземпляр и выполняю вызов веб-службы всякий раз, когда получаю уведомление Firebase.
Мое приложение отлично работает на переднем и заднем плане
получает уведомление, и веб-служба также запускается.
Но когда мое приложение находится в состоянии уничтожения.
Я проверяю, запущена ли служба Android, если нет, запускаю службу и отправляю широковещательный приемник, чтобы инициировать вызов веб-службы, но я получаю следующую ошибку.
Причина: java.lang.NullPointerException: попытка вызвать виртуальный
метод 'java.lang.Object retrofit2.Retrofit.create (java.lang.Class)'
по нулевой ссылке на объект
Это связано с тем, что экземпляр модификации не может быть создан в состоянии уничтожения приложения.
как я могу это исправить?
Заранее спасибо
открытый класс FCM_Background расширяет Service {
приватная статическая строка urlString;
частная статическая строка: orderBaseUrl, orderUrl, orderMethod, receiveBaseUrl, receiveUrl, receiveMethod;
закрытый статический контекстный контекст;
private BroadcastReceiver receiver;
private String orderId;
private ArrayList<Integer> orderid;
DecimalFormat form = new DecimalFormat("#.##");
private Toast toastMessage;
private String paymentType;
private String orderComment;
private String LogTag = FCM_Background.class.getSimpleName();
private SQLiteHelper helper;
public static SQLiteDatabase db;
private String location_id;
private String state;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, final int startId) {
orderid = new ArrayList<Integer>();
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
location_id = MyPreferenceManager.getInstance(getApplicationContext()).getData(Common.LOCATION_ID);
state = intent.getExtras().getString("FROM");
fetchJsonDataFromRetrofit();
}
};
registerReceiver(receiver, new IntentFilter(Common.FCM_BROADCAST));
return super.onStartCommand(intent, flags, startId);
}
public synchronized void fetchJsonDataFromRetrofit() {
helper = new SQLiteHelper(getApplicationContext());
db = helper.getWritableDatabase();
final ApiInterface listApi = new ApiClient().getClient().create(ApiInterface.class);
Common.validationToken = MyPreferenceManager.getInstance(getApplicationContext()).getData(Common.AUTH_TOKEN);
if (null == orderBaseUrl || null == orderUrl) {
orderBaseUrl = MyPreferenceManager.getInstance(this).getData(Common.DOMAIN_NAME);
orderUrl = "admin/api/orders";
}
final Call OrderCall = listApi.getOrderDetails (orderBaseUrl, orderUrl, Common.validationToken);
OrderCall.enqueue(new Callback<OrderView>() {
@Override
public void onResponse(Call<OrderView> call, Response<OrderView> response) {
orderBaseUrl = null;
orderUrl = null;
if (response.isSuccessful()) {
ArrayList<Order> orders = response.body().getOrderList();
int orderSize = orders != null ? orders.size() : 0;
String orderType = null;
String orderCreatedDate = null;
if (orderSize > 0) {
orderDetails(orders, orderType, orderCreatedDate);
}
} else {
ActionOnTokenExpiry(response);
}
}
@Override
public void onFailure(Call<OrderView> call, Throwable t) {
}
});
}