我在一个Android应用程序中遇到了这样一种情况,我希望启动一个网络活动(发送一些数据),它应该每秒运行一次。我通过以下方式实现:
在onCreate()
中,我有以下代码:
tv = new TextView(this);
tv.postDelayed(sendData, 1000);
sendData()
函数:
Handler handler = new Handler();
private Runnable sendData=new Runnable(){
public void run(){
try {
//prepare and send the data here..
handler.removeCallbacks(sendData);
handler.postDelayed(sendData, 1000);
}
catch (Exception e) {
e.printStackTrace();
}
}
};
问题是这样的:当用户按下返回按钮并退出应用程序(UI消失)时,sendData()
函数仍在执行,这正是我想要的。现在当用户重新启动应用程序时,我的onCreate()
会再次被调用,并且我每秒钟都会调用sendData()
。它就这样继续下去。每次用户进出应用程序,每秒钟会发生一个sendData()
调用。
我做错了什么?是我的new Handler()
出了问题吗?什么是处理这个问题的最佳方法?我希望每秒钟只调用一次sendData()
,直到用户退出应用程序(从应用程序管理器中退出)。