我正在尝试学习可以更新UI的服务和后台线程,这里,通过从startService()
调用MainActivity
方法启动此服务,问题是:当循环运行时为更大的 i
值,没有显示所有值的Toasts(有趣的是在循环后也没有显示Toast),但这次我用10/20等测试并且工作得很好。 / p>
以下是MyService.java
的代码:
public class MyService extends IntentService {
Handler mhandler;
public MyService() {
super("Hello");
}
@Override
public void onCreate() {
Toast.makeText(this, "Service Starting!", Toast.LENGTH_SHORT).show();
super.onCreate();
mhandler = new Handler();
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
mhandler.post(new Runnable() {
@Override
public void run() {
int i;
for (i = 0; i < 100; i++) {
Toast.makeText(MyService.this, "i is: " + i, Toast.LENGTH_SHORT).show();
}
Toast.makeText(MyService.this, "finally i is: "+i, Toast.LENGTH_SHORT).show();
}
});
}
}
并为Android服务,后台任务,广播接收器上的初学者请求一些非常有用的资源。我有developer.android.com(不太......对初学者很有帮助),www.vogella.com等。先谢谢。
答案 0 :(得分:2)
我相信你只看到i的前几个值的原因是因为android不会允许应用程序向toast队列发送垃圾邮件。
正如@David Wasser在OP帖子中所提到的那样,Toast不是一个可靠的调试工具。 请改用logcat:
Log.v("TAG", "Message")