Android服务上下文错误

时间:2017-06-12 14:21:28

标签: java android request android-volley

我正在尝试构建一个不断向Volley发送http请求的服务:

public class inviadati extends Service {

我读到Service是一个上下文,所以我应该使用“this”来引用它

public inviadati() {
        RequestQueue mRequestQueue = Volley.newRequestQueue(this);

但是我一直在RequestQueue行上得到一个NullPointerException。有什么想法吗?

P.S我已经尝试了getApplicationContext(),getActivity(),getBaseContext()但它们都没有工作。

2 个答案:

答案 0 :(得分:0)

您正在实施构造函数。你不应该为Service这样做。相反,覆盖onCreate方法并将代码放在那里,就像这样

public class inviadati extends Service {

    private RequestQueue mRequestQueue;

    @Override
    public void onCreate() {
        super.onCreate();
        mRequestQueue = Volley.newRequestQueue(this);
    }
}

答案 1 :(得分:0)

添加此代码并更改服务类名称Inviadati

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    Log.i(TAG, "Service onStartCommand");

    new Thread(new Runnable() {
        @Override
        public void run() {
            for (; ; ) {
                try {
                    Thread.sleep(1000 * 60 * 2); // every 2 minuts this service send data
                } catch (Exception e) {
                }

                RequestQueue mRequestQueue = Volley.newRequestQueue(this);
            }
        }
    }).start();

    return Service.START_STICKY;
}