我在android工作。我想画一个评论窗口。其中我有一个列表视图,显示从API检索的注释。
我希望在30秒后再次调用该API,以便我可以在列表视图中显示最近的评论。
这是用于调用我的API的代码。
HttpClient hc = new DefaultHttpClient();
HttpGet get = new HttpGet(“192.168.1.127/CC/comment”);
HttpResponse rp = hc.execute(get);
if(rp.getStatusLine()。getStatusCode()== HttpStatus.SC_OK) {
Then put values in some text boxes.
}
我希望在10秒后反复调用上面的代码。请帮我写代码。您可以举一个简短的例子来解决这类问题。我的时间很短,没有时间在谷歌搜索,所以请帮助我如何调用API并定期更改UI?
答案 0 :(得分:4)
I want to call that API after 30 second again and again
您应该将服务与广播接收器一起使用。
服务将在后台执行您的任务,但不会提供任何UI,因此您需要注册广播接收器。
Check this Sample,此示例显示如何使用服务和广播接收器重复任务和更新UI。
另外refer this tutorial以供进一步参考。
答案 1 :(得分:0)
我已经解决了我的问题: -
public class ClassName extends Activity
{
@Override
public void onCreate(Bundle savedInstance)
{
super.onCreate(savedInstance);
setContentView(R.layout.live_stream_layout);
handler.post(timedTask);
private Runnable timedTask = new Runnable(){
@Override
public void run()
{
//do your work here for calling API and UI
handler.postDelayed(timedTask ,2000 );
}};
答案 2 :(得分:0)
您可以简单地使用以下代码:
// We need to use this Handler package
import android.os.Handler;
// Create the Handler object (on the main thread by default)
Handler handler = new Handler();
// Define the code block to be executed
private Runnable runnableCode = new Runnable() {
@Override
public void run() {
// Do something here on the main thread
Log.d("Handlers", "Called on main thread");
// Repeat this the same runnable code block again another 2 seconds
// 'this' is referencing the Runnable object
handler.postDelayed(this, 2000);
}
};
// Start the initial runnable task by posting through the handler
handler.post(runnableCode);
您可以使用以下方法删除可运行对象的计划执行:
//删除待执行的代码
handler.removeCallbacks(runnableCode);