【问题标题】:Android service context errorAndroid服务上下文错误
【发布时间】:2017-06-12 14:21:27
【问题描述】:

我正在尝试构建一个使用 Volley 持续发送 http 请求的服务:

public class inviadati extends Service {

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

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

但我在 RequestQueue 行上不断收到 NullPointerException。有什么想法吗?

P.S 我已经尝试过 getApplicationContext()、getActivity()、getBaseContext(),但它们都不起作用。

【问题讨论】:

  • 发布完整的代码和日志

标签: java android request android-volley


【解决方案1】:

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

public class inviadati extends Service {

    private RequestQueue mRequestQueue;

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

【讨论】:

  • 谢谢,但是如果变量只能在 onCreate() 中访问,我该如何访问队列呢?
  • 你需要成为会员,我会更新我的代码sn-p
【解决方案2】:

添加此代码并更改服务类名称 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多