我基本搭售打開一項服務,每10秒鐘,將顯示吐司說「10秒過去」 這就是我想要做的, 經過許多研究發現,要循環服務我 需要使用while(true) - sleep ... method ... 但服務或我的應用程序崩潰每次我開始服務 在循環中服務崩潰 - Android Studio
什麼是我的問題(或每次定時器溢出時間是精確的)?
我的猜測是,也許我傳遞給敬酒contaxt是錯誤的? 也許還有另一種方式來顯示在循環(在一個serivice中)每10秒鐘吐司?
這裏是我的服務代碼>
package com.greenroad.candidate.mywallpaperchanger;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
/**
* Created by pitsponet on 31/08/2015.
*/
public class myService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(getApplicationContext(), "service created",
Toast.LENGTH_LONG).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//try to run loop for showing up a toast
new Thread(new Runnable(){
public void run() {
// TODO Auto-generated method stub
while(true)
{
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//REST OF CODE HERE//
Toast.makeText(getApplicationContext(), "service started",
Toast.LENGTH_LONG).show();
}
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getApplicationContext(), "service stoped",
Toast.LENGTH_LONG).show();
}
}
如果它崩潰了,你應該能夠得到一個堆棧跟蹤。嘗試發佈,因爲它將提供更多的細節,以瞭解發生了什麼。 – Acapulco
哎阿卡普爾科,unfortuntly我不能堆棧跟蹤它becouse我建立這個作爲一個APK文件,並將其上傳到我的設備,目前的Android Studio不會看到我的設備,而且在它的模擬器不工作,所以我無法以其他方式檢查它。 –
我更新了我的答案。我希望你現在很清楚。 – DavidH