我正在创建一个Android应用程序,它从网页下载一些文本并将其放在String
中,然后在TextView
中打印该字符串。但网页内容每秒都会发生变化,因此我希望TextView
能够实时更新,每秒显示新的String
。要从网页下载文字并设置我使用TextView
的{{1}}文字,我在主AsyncTask
中使用execute()
方法调用onCreate()
。我不知道如何更新它,没有让应用程序崩溃。
抱歉英语不好,这是我的MainActivity:
Activity
那是我的aSyncTask:
package com.example.pack;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity
{
TextView textView;
URL url;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
url = null;
try
{
url = new URL("myURL");
}
catch (MalformedURLException e) {}
new VariabileLikeTask(textView).execute(url);
}
}
很抱歉,如果格式代码错误,这是我的第一个帖子。
答案 0 :(得分:0)
经常运行AsyncTask不是一个坏主意吗?这将使应用程序在网络操作中更重。
如果您的意思是实时,推送通知或套接字连接将是最佳匹配。如果您因为尝试从网页获取数据而无法使用推送通知,请考虑使用服务类。然后只需创建一个计时器任务,并在一小段时间后运行AsyncTask。
这是一段时间间隔后运行任务的简单演示,
private int m_interval = 5000; // 5 seconds by default, can be changed later
private Handle m_handler;
@Override
protected void onCreate(Bundle bundle)
{
...
m_handler = new Handler();
}
Runnable m_statusChecker = new Runnable()
{
@Override
public void run() {
//this function can change value of m_interval.
new VariabileLikeTask(textView).execute(url);
m_handler.postDelayed(m_statusChecker, m_interval);
}
}
void startRepeatingTask()
{
m_statusChecker.run();
}
void stopRepeatingTask()
{
m_handler.removeCallback(m_statusChecker);
}
答案 1 :(得分:0)
在这个post中,用户尝试显示来自AsyncTask的对话框,但代码在运行时更改txtBox是相同的,观看它!
告诉我,如果我帮助你并做好编程!