服务无法正常工作

时间:2017-05-16 18:32:08

标签: java android multithreading android-service

我正在尝试学习可以更新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等。先谢谢。

1 个答案:

答案 0 :(得分:2)

我相信你只看到i的前几个值的原因是因为android不会允许应用程序向toast队列发送垃圾邮件。

正如@David Wasser在OP帖子中所提到的那样,Toast不是一个可靠的调试工具。 请改用logcat:

Log.v("TAG", "Message")