не удалось создать модифицированный экземпляр - PullRequest
0 голосов
/ 15 ноября 2018

Мое приложение использует службу 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) {
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...