我正在尝试学习可以更新UI的服务和后台线程,这里,该服务是通过从MainActivity
调用startService()
方法启动的,问题是:当循环运行较大的值 i
时,不会显示所有值的 Toast(有趣的是,循环后制作的 Toast 也没有显示),但这次我使用 10/20 等进行测试并完美运行。
以下是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等。提前致谢。
最佳答案
我相信您只看到 i 的前几个值的原因是 Android 不允许应用程序向 toast 队列发送垃圾邮件。
正如 @David Wasser 在 OP 帖子的评论中提到的,Toast 不是一个可靠的调试工具。 使用 logcat 代替:
Log.v("TAG", "Message")
关于java - 服务无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44009075/