在任何地方使用我的 AsyncTask 类中的变量

Posted

技术标签:

【中文标题】在任何地方使用我的 AsyncTask 类中的变量【英文标题】:Use my variables from AsyncTask class everywhere 【发布时间】:2019-06-01 08:10:25 【问题描述】:

我从带有 json 的 api 获取一些信息,并将其添加到一些变量上。问题是我不知道如何在其他类中使用它们。这是我的 AsyncTask 类

class TestJson extends AsyncTask<String,String,String> 
     public static String aJsonString;

     @Override
     protected String doInBackground(String... strings) 


         ArrayList<Geocode> geocodes = null;

         DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
         HttpPost httppost = new HttpPost("https://developers.zomato.com/api/v2.1/geocode?lat=40.712776&lon=-74.005974");

         httppost.setHeader("user-key", "mykey");


         InputStream inputStream = null;
         String result = null;
         try 
             HttpResponse response = httpclient.execute(httppost);
             HttpEntity entity = response.getEntity();

             inputStream = entity.getContent();
             // json is UTF-8 by default
             BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
             StringBuilder sb = new StringBuilder();

             String line = null;
             while ((line = reader.readLine()) != null) 
                 sb.append(line + "\n");
             
             result = sb.toString();
             JSONObject jObject = new JSONObject(result);


             JSONObject jsonObject= (JSONObject) jObject.get("location");


             //for nested json objects
             String title=(String)jsonObject.get("city_name");


             aJsonString = jObject.getString("link");

          catch (Exception e) 

          finally 
             try 
                 if (inputStream != null) inputStream.close();
              catch (Exception squish) 
             
         

         try 

          catch (Exception e) 
             e.printStackTrace();


         
         return null;
     
 

例如,我将 aJsonString 设为静态,但如果我在其他任何地方调用它,它都会给我 null。对此有什么想法吗?

【问题讨论】:

你知道解析成功了吗?尝试在分配aJsonString 之前放置一条日志语句。值正确吗? 是的,我得到了我想要的(我使用了日志),但我不能在其他任何地方使用变量 这有用吗? ***.com/questions/12575068 @I.Renk 我做错了我不知道。你给我的界面示例不起作用:/ 【参考方案1】:

尝试将 json 数据存储到具有公共访问权限的静态变量(类级别/全局)中,然后在任何您想要的地方共享。(您可能需要一些 if - else 条件来检查有效数据和非空数据)。

【讨论】:

以上是关于在任何地方使用我的 AsyncTask 类中的变量的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce:在任何地方添加/显示产品或变体自定义字段

是否可以在任何地方替换全局“operator new()”?

Flutter 从 Api 获取 Userinfo 并在任何地方使用。请帮我

我怎样才能让我的无效公开在任何地方使用

为啥当我使用 Pygame 时 Spyder 不能在任何地方显示我的图形输出?

如何在 Python 中设置一个通用选项以在任何地方只显示 N 位数字?