2017-06-12 39 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; 
}