2017-06-12 38 views
0

我试图建立一个连续凌空发送HTTP请求的服务:的Android服务上下文错误

public class inviadati extends Service { 

,我读了服务是一个方面,所以我应该用“这个”来称呼它像这

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

但我不断收到RequestQueue行上的NullPointerException。有什么想法吗?我已经尝试过getApplicationContext(),getActivity(),getBaseContext(),但他们都没有工作。

+0

邮完整的代码和日志 –

回答

0

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

public class inviadati extends Service { 

    private RequestQueue mRequestQueue; 

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

谢谢,但之后我该怎么办如果变量只能在onCreate()中访问,请访问队列? – jajay

+0

你需要让它成为会员,我会更新我的代码片段 – 0xDEADC0DE

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; 
}