我的问题与Android有关: 如何在intentservice中每20秒运行一次任务? 问题是,我必须初始化一些将在Handler“run”过程中使用的类。 它工作一次 - 但随后服务停止&处理程序循环在20秒后再次启动时应用程序崩溃(可能是因为服务停止时被淘汰的类?)。因此,解决方案是,只要Handler运行或者丢弃代码并正确执行,服务就会保持运行状态?
希望,有人可以帮助我。public class Fadenzieher extends IntentService{
private Handler handler = new Handler();
private Runnable timedTask = new Runnable(){
@Override
public void run() {
// My functions get called here...
// class1member.getDBWorkdone();
handler.postDelayed(timedTask, 20000);
handler.obtainMessage();
}};
public Fadenzieher() {
super("Fadenzieher");
}
@Override
protected void onHandleIntent(Intent intent) {
// SOME INITIALISING
// I have to init some vars & functions here that
// will also be used inside the handler loop
// Class1 class1member = new Class1();
// class1member.startUpDB();
handler.post(timedTask); }
非常感谢你提前!!!
----所以这是现在更新的代码(14 nov.2011)
public class Fadenzieher extends Service{
private static final long UPDATE_INTERVAL = 60000;
Context context = this;
private Timer timer = new Timer();
DbHelper dbHelper;
public void onCreate(){
dbHelper = new DbHelper(context);
runTheLoop();
}
protected void runTheLoop() {
timer.scheduleAtFixedRate(new TimerTask(){
@Override
public void run() {
dbHelper.dosomethings();
Toast.makeText(context, "CALL", Toast.LENGTH_LONG).show();
}}, 0, UPDATE_INTERVAL);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Starte Service“, Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent,flags,startId);
}
public void onDestroy() {
super.onDestroy();
dbHelper.close();
Toast.makeText(this, "Stoppe Service“, Toast.LENGTH_LONG).show();
}
// We return the binder class upon a call of bindService
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
public class MyBinder extends Binder {
Fadenzieher getService() {
return Fadenzieher.this;
}
}
}
整个应用程序立即崩溃。
答案 0 :(得分:4)
如何在intentservice中每20秒运行一次任务?
这不适合IntentService
。请使用常规Service
。
当它工作一次 - 但随后服务停止&处理程序循环在20秒后再次启动时应用程序崩溃
IntentService
返回时, onHandleIntent()
会关闭,这就是为什么这会让你失望的原因。请使用常规Service
。
此外: