因此,我开始构建一个我已经在我的计算机上使用 JavaFX 为 android 编写的应用程序。我对android几乎是全新的。
我现在正在努力的是顺利下载文件。
我的MyActivity.java
课堂上有以下代码:
/**
* Called when the user clicks the getWebsite button
*/
public void getWebsite(View view) {
WebReader web = new WebReader(URL);
Thread webThread = new Thread(web);
webThread.start();
try {
webThread.join();
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(web.getWebsite());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
WebReader 实现 Runnable。调用以下方法public void run()
:
private void getWebsite(String URL) {
BufferedReader in = null;
String line = "";
java.net.URL myUrl = null;
try {
myUrl = new URL(URL);
in = new BufferedReader(new InputStreamReader(myUrl.openStream(), "UTF-8"));
while ((line = in.readLine()) != null) {
toReturn = toReturn + "\n" + line;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
整个过程都有效,我在我的 TextView 上显示了网站文本(而不是链接指向的文件中的文本 - 它是来自 Google Drive 的直接下载链接)。
但是:按下按钮的动画与文本同时出现,所以在我实际按下它之后大约 1 秒。我猜我在下载文件时仍然以某种方式让 UI-Thread 进入睡眠状态。
我怎样才能让按钮在按下时显示它的动画?
PS:我尝试与意图合作,但未能将数据从下载意图传输到UI ...执行它!
PPS:如果您对此代码有任何不满意的地方(线程问题、不良风格等),请随时告诉我。 当试图教自己一些东西时,批评是唯一的学习方式!