我查看了StackOverflow的答案,但没找到多少。所以,我这样做是为了练习,就像Hello World使用JSON一样,我从openweather API获得JSON响应。我在EditText中写下城市的名称,然后按下按钮进行搜索,并在日志中显示JSON字符串。
public class MainActivity extends AppCompatActivity {
EditText city;
public void getData(View view){
String result;
String cityName = city.getText().toString();
getWeather weather = new getWeather();
try {
result = weather.execute(cityName).get();
System.out.println(result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
public class getWeather extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... urls) {
URL url;
HttpURLConnection connection = null;
String result = "";
try {
String finalString = urls[0];
finalString = finalString.replace(" ", "%20");
String fullString = "http://api.openweathermap.org/data/2.5/forecast?q=" + finalString + "&appid=a18dc34257af3b9ce5b2347bb187f0fd";
url = new URL(fullString);
connection = (HttpURLConnection) url.openConnection();
InputStream in = connection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while(data != -1){
char current = (char) data;
result += current;
data = reader.read();
}
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
city = (EditText) findViewById(R.id.editText);
}
}
我该怎么做才能不收到那个消息?
<代码>天气。执行(cityName)。get()
当您执行get()时,您正在等待异步任务完成。因此,您正在Ui线程上运行所有繁重的操作。
从get()的文档中:
如有必要,等待计算完成,然后检索其结果。
删除get()。
这很好,但我在日志中收到“应用程序可能做了太多工作”消息,并跳过了一系列帧。我该如何解决这个问题?
我正在用这个功能为Android应用程序编码: 我成功地运行了它,但在我为Android支持设计导入了一些Nuget软件包之后,现在它抛出了这样一条消息。 我/编舞(1962):跳过了524帧!应用程序可能在其主线程上做了太多工作。 你能告诉我我做错了什么吗?
我正在开发一个应用程序,它应该从网络服务中获取JSON响应,并将每个元素写入列表视图,我读到我应该使用Asyncask来获取HTTP响应,我做到了,我可以从网络服务中检索数据并在TextViews中显示它们。但是当我尝试在列表视图中显示元素时,它不会显示任何内容,并在logcat中给我以下消息: 这是我的主要代码: 我的列表适配器: 最后是搜索结果。java: 那么,我做错了什么?你对此有什么想法
这发生在我将微调值保存到文件时。我已经使用线程来重新使用它的工作。但它仍然不工作...请帮助我...
我在下面的代码中ping了java Android中的IP列表,但我现在的问题是运行时出现延迟,这个问题显示为“跳过602帧!应用程序可能在其主线程上做了太多工作。”有人能给我推荐一个解决方案吗?因为我是android的初学者
在我的viewpager实现中,我正在膨胀视图(而不是片段)。我的主课是拓展活动。当我尝试从我的应用程序或应用程序中滑动屏幕时,我会遇到此错误 和 CustomPagerAdapter: 我的活动: 是实验室布局吗: