【发布时间】:2014-07-09 12:40:40
【问题描述】:
我在服务上编写了一个方法,每 x 秒运行一次。但是也有一些问题。
我做的是
public class noti extends Service {
Context mcont;
private Handler myhandler ;
private long RETRY_TIME = 15000;
private long START_TIME = 2000;
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onStart(Intent intent, int startId) {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mcont=this;
myhandler= new Handler();
myhandler.postDelayed(myRunnable, START_TIME);
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
try {
myhandler.removeCallbacks(myRunnable);
} catch (Exception e) {
// TODO: handle exception
}
}
private Runnable myRunnable = new Runnable() {
public void run() {
try {
new get_notifyalert_service(mcont).execute("") ;
} catch (Exception e) {
// TODO: handle exception
}
myhandler.postDelayed(myRunnable, RETRY_TIME);
}
};
}
这是正确的方法吗?
当我在手机上检查 settings->apps->running-apps 时显示有时会重新启动并且需要很长时间
提前致谢
【问题讨论】:
-
为什么不使用
AlarmManager...一旦服务以任何方式停止,您当前的实现将不会再次被调用。但警报管理器会。 -
你能分享任何链接吗?谢谢
-
你为什么不直接用谷歌搜索 :)
-
好的,感谢您的回答
-
@SMR 我可以用 alarmmanager 运行我的方法吗,因为我可以看到我们可以用 alarmmanager 使用意图
标签: java android android-service android-handler