我正在使用 IntentService 通过 JSON 处理与服务器的网络通信。JSON/服务器部分工作正常,但我无法将结果返回到需要的地方。以下代码显示了我如何从 onClick() 内部启动意图服务,然后让服务更新全局变量以将结果传递回主活动。
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() 完成后才会被调用,因此我正在寻找结果的代码在查看未初始化的结果时卡住了。
我应该做些什么不同的事情,以便在我检查结果之前调用意图服务?如果我将点击监听器从 onCreate() 函数中拉出来,它会起作用吗?是否有另一个/更好的方式来构建此代码?非常感谢。