Java(android) 程序暂停, Thread.sleep?
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.i("aaa", "hello");
TelephonyManager tm = (TelephonyManager)getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
deviceid = tm.getDeviceId();
username = SysUtil.loginname;
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat stimeFormat = new SimpleDateFormat("HH:mm:ss");
date = sDateFormat.format(new java.util.Date());
time = stimeFormat.format(new java.util.Date());
//发送
message = username + ","
+ deviceid + ","
+ date + ","
+ time + ","
+ preferences.getString("longtitude", "fail") + ","
+ preferences.getString("latitude", "fail") + ","
+ preferences.getString("accelerator", "fail,fail,fail") + ","
+ preferences.getString("magnetic", "fail,fail,fail") + ","
+ preferences.getString("pressure", "0") + ","
+ preferences.getString("light", "0") + ","
+ preferences.getString("wifi", "fail,fail,fail");
try {
String s = SysUtil.client.sendMessage(message);
if(s.equals("fail"))
{
editor.putString("last" + SysUtil.cur++, message);
editor.commit();
}
if(s.equals("login"))
{
SysUtil.pushlogin(getApplicationContext());
editor.putString("last" + SysUtil.cur++, message);
editor.commit();
}
if(s.equals("success"))
{
SysUtil.cur--;
for(; SysUtil.cur > 0; SysUtil.cur--)
{
preferences.getString("last" + SysUtil.cur, message);
s = SysUtil.client.sendMessage(message);
if(!s.equals("success"))
break;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
editor.putString("last" + SysUtil.cur++, message);
editor.commit();
}
}
}, 0, SysUtil.frequncy * 300);
}
目前我是用Timer来实现每隔一段时间执行一次run()里面的程序
但是后来功能需要,发现要动态的改变间隔时间,这一点上timer好像不能实现。
后来改成了while(true)循环里面加Thread.sleep(/*间隔时间*/),try/catch异常
发现应用好像陷入了死循环,至少,程序总是无响应无响应的。
求助!
追问:其实就是不愿用线程,没想到Timer不允许改period。
现在看来还是用线程比较方便
答案:我觉得吧
你暂停的时候应该吧TIMER.CANCEL()掉,也就是退出TIMER,等恢复的时候再重新调用TIMER
如果时间是变动的,那么你就不要用TIMER,自己NEW 一个THREAD然后在THREAD里设置一个标志变量,可以再外面访问的,用它来控制线程的退出,里面再调用this.sleep(),
不能再主线程里直接SLEEP,那样程序会全停掉
其他:像这类定时的工作android上建议使用AlarmManager,里面可以完成timer的所有功能,而且更简单
上一个:怎样实现监视键盘和鼠标的java后台程序
下一个:我把小数保存为字符串类型,怎么在java中遍历出来时,凡是小数点前的0都不见了,帮帮忙好