如何使用来自Internet的数据初始化类并同步类实例变量

时间:2014-01-13 21:55:28

标签: java android asynchronous android-async-http

如果这有一个简单的答案,我想道歉,但我似乎无法为这种情况提出模式/流程。

我正在使用Android Asynchronous Http Client,它在完成请求时提供回调。我想这是我感到困惑的地方,因为我不知道在哪里使用这个库。

以下是我的设置:

DataClass.java

 public class DataClass {
     String created_date = null;
     String username = null;
     String details = null;
     private static AsyncHttpClient client;

     public DataClass(String id) {
         client = new AsyncHttpClient();
         GetDataObject(id);
     }

     public void GetDataObject(String id) {
          //...build RequestParams()
          client.post(get_data_url, params, new JsonHttpResponseHandler(){
              public void onSuccess(int statusCode, Header[] headers, byte[] response) {
                 String response_string = new String(response);
                 //...parse JsonObject
                 created_data = jsonObject.getString("date");
                 username = jsonObject.getString("username");
                 details = jsonObject.getString("details");
                 // all dataClass instance variables accessed here are null.
                 Log.d("Created: ", created_data); //returns somedate
                 Log.d("Username: ", username); //returns someusername   
              }
          });
     }
 }

ShowDataActivity.java

 public class ShowDataActivity extends Activity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_show_question);

         Intent intent = getIntent();
         String id = intent.getStringExtra("id");
         DataClass dataClass = new DataClass(id);

         // all dataClass instance variables accessed here are null.
         Log.d("Created: ", dataClass.created_data); //returns null
         Log.d("Username: ", dataClass.username); //returns null

     }
 }

当我在RestClient回调中的实例变量赋值上放置断点时,我可以看到它们不是null,而是包含正确的数据。

我一直在搜索并看到一些内置的Android库,例如LoadersContentObserverBoradcastReceivers可能有所帮助,但我不知道如何在与Android Asynchronous Http Client结合。

请注意上述示例不完整,但所有相关信息都在那里。

如果需要更多信息,请与我们联系。谢谢。

问题: 当我在ShowDataActivity中实例化DataClass时,我的dataClass实例变量为null。我猜它是因为变量是在我实例化对象之后的回调中分配的。不确定如何询问此问题,但如何确保DataClass dataClass = new DataClass(id);初始化来自互联网的数据。

0 个答案:

没有答案