Attempt to invoke virtual method: on a null object reference

Я для проверки и мониторинга сети создал класс NetworkState и определил там такие методы. Спустя 5-6 секунд после запуска программа завершается. Если после запуска нажать на кнопку паузу/воспроизведения, то программа работает как положено и не завершается.

public class NetworkState {

    public static boolean isOnline() {
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting())
        {
            return true;
        }
        return false;
    }

    public static boolean isOnline(Context context)
    {
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting())
        {
            return true;
        }
        return false;
    }

    public static boolean isOnline(ExoPlayer.Listener listener)
    {
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting())
        {
            return true;
        }
        return false;
    }
}

Вот лог ошибки. Здесь строка NetworkState.java:15 ведет на (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.rockradio, PID: 18250
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
        at com.rockradio.NetworkState.isOnline(NetworkState.java:15)
        at com.rockradio.MainActivity$2$1.run(MainActivity.java:155)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/Process: Sending signal. PID: 18250 SIG: 9
Disconnected from the target VM, address: 'localhost:8601', transport: 'socket'

А строка MainActivity.java:155 ведет на if(isOnline()) в MainActivity.

Thread t = new Thread() {
            @Override
            public void run() {
                try {
                    while (!isInterrupted()) {
                        Thread.sleep(Const.PHOTO_LOAD_REFRESH_TIME);
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if(isOnline())
                                {
                                    new GetTrackInfo().execute();
                                }
                            }
                        });
                    }
                } catch (InterruptedException e) {
                }
            }
        };

Как решить эту проблему? Повторяю. Если просто запустить и ничего в программе не сделать, то завершается спустя 5-6 секунд, иначе все ОК!


Ответы (0 шт):