0
我的問題與Android相關: 如何在intentservice中每20秒運行一次任務? 問題是,我必須初始化一些將在Handler「運行」過程中使用的類。 它工作一次 - 但然後服務停止&當處理程序循環在20秒後再次啓動時(可能是因爲服務停止時被刪除的類),應用程序會崩潰?所以也許解決方法是讓服務在Handler運行時保持運行,或丟棄代碼並正確執行它?Android - 如何在服務意圖(工作線程)中定期通過「處理程序」運行任務
希望有人能幫助我。
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. 2011年11月)
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;
}
}
}
整個應用程序崩潰立即。
如果有一個崩潰,你需要發佈logcat。 – EboMike