我正在使用IntentService通過JSON處理與服務器的網絡通信。 JSON /服務器部分工作正常,但我無法將結果返回到需要的地方。以下代碼顯示了我如何從onClick()開始啓動intent服務,然後讓服務更新全局變量以將結果轉發回主活動。如何將IntentService的結果返回到活動中?
public class GXActivity extends Activity {
private static final String TAG = "GXActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
// === called when the activity is first created
Log.i(TAG, "GXActivity Created");
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
View.OnClickListener handler = new View.OnClickListener() {
public void onClick(View v) {
// === set up an application context to hold a global variable
// === called user, to contain results from the intent service
GXApp appState = ((GXApp) getApplicationContext());
User user = new User(-1); // initialize user id to -1
appState.setUser(user);
// === next start an intent service to get JSON from the server;
// === this service updates the user global variable with
// === results from the JSON transaction
Intent intent = new Intent(this, GXIntentService.class);
startService(intent);
// === check app context for results from intent service
appState = ((GXApp) getApplicationContext());
if (appState.getUser().getId() != -1)...
}
}
}
}
我遇到的問題是,解析JSON的意圖服務沒有得到後的onCreate()完成調用到,所以我的代碼,在尋找的結果是停留在看未初始化的結果。
我應該做什麼不同,以便在檢查結果之前調用intent服務?如果我將click監聽器從onCreate()函數中取出,它會起作用嗎?有沒有其他的/更好的結構代碼?非常感謝。
看到這可能會有所幫助http://stackoverflow.com/a/9089086/985143 – 2012-04-26 14:01:34