Android 只有在调试中运行它时才有效

Android 只有在调试中运行它时才有效,android,json,asynchronous,android-asynctask,okhttp,Android,Json,Asynchronous,Android Asynctask,Okhttp,我正在尝试获取JSONData,如果我在调试模式下运行它,它会工作,但如果没有,它就不会工作。。。我认为我对这个异步的东西有问题,但我不知道哪里出了问题。请帮助我,我正在努力完成这两天,没有什么会工作 public static final String SZABAD_EU = "SZABAD_EU"; public static Collections collections = new Collections(); CollectionsAdapter adapter; @InjectV

我正在尝试获取JSONData,如果我在调试模式下运行它,它会工作,但如果没有,它就不会工作。。。我认为我对这个异步的东西有问题,但我不知道哪里出了问题。请帮助我,我正在努力完成这两天,没有什么会工作

 public static final String SZABAD_EU = "SZABAD_EU";
public static Collections collections = new Collections();
CollectionsAdapter adapter;

@InjectView(R.id.archivumReyclerView)
RecyclerView mRecyclerView;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_archivum);
    ButterKnife.inject(this);

    setSzabadEuMusoroks();

    adapter = new CollectionsAdapter(this);
    mRecyclerView.setAdapter(adapter);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(layoutManager);

    mRecyclerView.setHasFixedSize(true);
}

public void setSzabadEuMusoroks(){
    if (isNetworkAvaible()){
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url("http://1956.osaarchivum.org/api/items?collection=13").build();

        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                alertUserAboutError();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String jsonData = response.body().string();
                Log.v("JSONDATA", jsonData);
                if (response.isSuccessful()) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                parseData(jsonData);
                            } catch (JSONException e) {
                                Log.e("JSONEXCEPTION", "Exception caught: ", e);
                            }
                        }
                    });
                } else {
                    alertUserAboutError();
                }
            }
        });
    }
    else{
        Toast.makeText(this, R.string.network_unavaible_message, Toast.LENGTH_LONG).show();
    }

private void parseData(String jsonData) throws JSONException{
    JSONArray jsonArray = new JSONArray(jsonData);
    SzabadEuMusorok[] szabadEuMusoroks = new SzabadEuMusorok[jsonArray.length()];

    for (int i = 0; i < jsonArray.length(); i++){
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        SzabadEuMusorok szabadEuMusorok = new SzabadEuMusorok();
        JSONArray elementTexts = jsonObject.getJSONArray("element_texts");

        JSONObject titleObject = elementTexts.getJSONObject(0);
        szabadEuMusorok.setTitile(titleObject.getString("text"));

        JSONObject subjectObject = elementTexts.getJSONObject(3);
        szabadEuMusorok.setSubject(subjectObject.getString("text"));

        JSONObject mainObject = jsonObject.getJSONObject("files");
        szabadEuMusorok.setAudioURL(mainObject.getString("url"));

        szabadEuMusoroks[i] = szabadEuMusorok;
    }
    collections.setSzabadEuMusoroks(szabadEuMusoroks);
}
公共静态最终字符串SZABAD_EU=“SZABAD_EU”;
公共静态集合=新集合();
采集适配器;
@InjectView(R.id.archivumReyclerView)
回收视图mRecyclerView;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_archivum);
注射(这个);
setzabadeumusoroks();
适配器=新集合适配器(此);
mRecyclerView.setAdapter(适配器);
RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(此);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setHasFixedSize(true);
}
公共无效设置Zabadeumusoroks(){
if(isNetworkAvailable()){
OkHttpClient=新的OkHttpClient();
Request Request=new Request.Builder().url(“http://1956.osaarchivum.org/api/items?collection=13build();
Call Call=client.newCall(请求);
call.enqueue(新回调(){
@凌驾
公共void onFailure(调用调用,IOE异常){
alertUserAboutError();
}
@凌驾
public void onResponse(调用调用、响应响应)引发IOException{
最后一个字符串jsonData=response.body().String();
Log.v(“JSONDATA”,JSONDATA);
if(response.issusccessful()){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
试一试{
parseData(jsonData);
}捕获(JSONException e){
Log.e(“JSONEXCEPTION”,“捕获异常:”,e);
}
}
});
}否则{
alertUserAboutError();
}
}
});
}
否则{
Toast.makeText(this,R.string.network_unavailable_message,Toast.LENGTH_LONG).show();
}
私有void parseData(字符串jsonData)抛出JSONException{
JSONArray JSONArray=新的JSONArray(jsonData);
szabadeumorok[]szabadeumoroks=newszabadeumorok[jsonArray.length()];
for(int i=0;i
请检查此解决方案

什么不起作用?没有Json?不同的字符串?解析时出错?我的数组仍然为空。它不会设置它。但是jsonData与调试中的相同?在调试中,从获取jsonData到解析,所有工作都正常。如果我运行它,它将在稍后崩溃,因为NullPointerException,因为数组设置为空null…您需要使用日志或Toast来检查发生了什么。