在我的应用程序中,我有一个显示来自互联网内容的活动.....我只是想知道如何自动刷新活动......
如果可能,请建议并提供一些代码块。
答案 0 :(得分:10)
您可以使用handler来执行循环过程,如下所示:
Handler handler = new Handler();
Runnable refresh;
在第一个通话时间:
refresh = new Runnable() {
public void run() {
// Do something
handler.postDelayed(refresh, 5000);
}
};
handler.post(refresh);
由于您无法在匿名类中调用非final变量,因此您必须在包含类中声明refresh
。
答案 1 :(得分:9)
试试这个,效果很好:))
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.mHandler = new Handler();
this.mHandler.postDelayed(m_Runnable,5000);
}//onCreate
private final Runnable m_Runnable = new Runnable()
{
public void run()
{
Toast.makeText(refresh.this,"in runnable",Toast.LENGTH_SHORT).show();
refresh.this.mHandler.postDelayed(m_Runnable, 5000);
}
};//runnable
答案 2 :(得分:4)
此代码如果您想首先创建视图并在指定时间跨度后刷新页面,请使用以下代码。(此处提及刷新率为20秒) 它每20秒工作一次精细和自动刷新。
public class MainActivity extends Activity {
Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.mHandler = new Handler();
m_Runnable.run();
}
private final Runnable m_Runnable = new Runnable()
{
public void run()
{
Toast.makeText(MainActivity.this,"in runnable",Toast.LENGTH_SHORT).show();
MainActivity.this.mHandler.postDelayed(m_Runnable,20000);
}
};
}
答案 3 :(得分:1)
考虑购买“The Busy Coder's Guide to Advanced Android Development”,特别阅读第13章“高级服务模式”。本章的源代码is available on Github,这个方便的介绍:
CWAC Wakeful:在工作中保持清醒
推荐的Android模式相当于cron作业和Windows 计划任务是使用AlarmManager。与...结合使用时效果很好 IntentService,因为服务将在后台线程上完成工作并关闭 当没有更多工作要做的时候。
它将AlarmManager
与IntentSerivce
联系起来。这比使用Handler要复杂得多,但在Service
中打包数据服务是一种很好的做法,如果你想在不同的应用程序之间共享数据,实际上是强制性的。
如果您不知道如何使用服务,请考虑购买The Busy Coder's Guide to Android Development。它“附带”我之前提到的那本书。我昨天买了所有这些,它们是名副其实的金矿。