我基本搭售打开一项服务,每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();
}
}
+0
如果它崩溃了,你应该能够得到一个堆栈跟踪。尝试发布,因为它将提供更多的细节,以了解发生了什么。 –
+0
哎阿卡普尔科,unfortuntly我不能堆栈跟踪它becouse我建立这个作为一个APK文件,并将其上传到我的设备,目前的Android Studio不会看到我的设备,而且在它的模拟器不工作,所以我无法以其他方式检查它。 –
+0
我更新了我的答案。我希望你现在很清楚。 –