java - 服务无法正常工作

标签 java android multithreading android-service

我正在尝试学习可以更新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/

相关文章:

java - 通过互联网的 RMI iiop

java - 在没有支持 bean 的情况下即时获取 inputText 的值?

c# - 在后台线程中监听事件

固定池的 Java Executors 服务

java - 列表扩展的增量 future

java - Spring 数据休息: Default Timestamp Fails and ID returns 0

android - 如何像在演示文稿中那样缓慢滚动放大的图像?

android - Jsoup 输出的 HashMap

java - Java(Android) 中的 PostMessage() 替代方案

java - Android TCP/IP 和 GUI 到其他线程的通信 - Tic Tac Toe 多人游戏