我有一個使用parse.com作爲其後端的android項目。爲了減少api調用次數,我一直在將「不太重要」的數據固定到本地數據存儲區,並嘗試在每個用戶會話中同步一次。我爲此使用IntentService。我正在調用IntentService,如下所示。但是當IntentService被調用時,我看不到任何日誌消息或調試斷點。調試IntentService同步ParseObjects
問題1:如何調試任何意圖服務?
問題2:我想爲每個用戶會話執行一次服務(每次用戶打開和關閉應用程序時)。我不想將代碼添加到活動的onPause方法中,因爲我的應用程序有多個活動,因此會話中多次調用onPause。因此,我正在從用戶可以退出應用程序之前的最後一個屏幕的活動onBackPressed調用該服務。這是否可靠?
意圖調用代碼:
@Override
public void onBackPressed() {
if(exitCount == 1)
{
exitCount=0;
Intent i= new Intent(this, SyncChoiceService.class);
this.startService(i);
super.onBackPressed();
}
else
{
Toast.makeText(getApplicationContext(), "Press Back again to quit.", Toast.LENGTH_SHORT).show();
exitCount++;
}
return;
}
IntentService代碼
public class SyncChoiceService extends IntentService {
/**
* Creates an IntentService. Invoked by your subclass's constructor.
*
* @param name Used to name the worker thread, important only for debugging.
*/
public SyncChoiceService(String name) {
super("SyncChoiceService");
}
@Override
protected void onHandleIntent(Intent intent) {
//android.os.Debug.waitForDebugger();
// Adding this waitForDebugger doesn't make a difference
ParseQuery query = new ParseQuery("PostChoice");
query.fromPin();
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(final List<ParseObject> list, ParseException e) {
if(list!=null)
{
if(!list.isEmpty())
{
ParseObject.saveAllInBackground(list, new SaveCallback() {
@Override
public void done(ParseException e) {
ParseObject.unpinAllInBackground(list, new DeleteCallback() {
@Override
public void done(ParseException e) {
Log.i("Unpinned ","everything");
}
});
}
});
}
}
}
});
}
}
添加一些'日誌。在'onHandleIntent'的開頭部署了'd' – pskink
你確定東西正在本地數據存儲中?它可能是你的列表是空的,並且該語句永遠不會被記錄。您可以嘗試在解析調用的旁邊記錄某些內容。 – Naveed
我將Log.d添加到onHandleIntent的乞求中,它也沒有被打印出來。 – 55597