Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务无法正常工作_Java_Android_Multithreading_Android Service - Fatal编程技术网

Java 服务无法正常工作

Java 服务无法正常工作,java,android,multithreading,android-service,Java,Android,Multithreading,Android Service,我试图学习可以更新UI的服务和后台线程,这里,这个服务是通过调用MainActivity中的startService()方法启动的,问题是:当循环运行的值大于I时,不会为所有值显示祝酒词(有趣的是,循环后制作的吐司也没有显示),但这次我用10/20等进行了测试,效果非常好 以下是MyService.java的代码: public class MyService extends IntentService { Handler mhandler; public MyService

我试图学习可以更新UI的服务和后台线程,这里,这个服务是通过调用
MainActivity
中的
startService()
方法启动的,问题是:当循环运行的值大于
I
时,不会为所有值显示祝酒词(有趣的是,循环后制作的吐司也没有显示),但这次我用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();
            }
        });


    }
}
公共类MyService扩展了IntentService{
汉德勒;
公共MyService(){
超级(“你好”);
}
@凌驾
public void onCreate(){
Toast.makeText(这是“服务启动!”,Toast.LENGTH_SHORT.show();
super.onCreate();
mhandler=新处理程序();
}
@凌驾
受保护的无效onHandleIntent(@Nullable Intent){
mhandler.post(新Runnable(){
@凌驾
公开募捐{
int i;
对于(i=0;i<100;i++){
Toast.makeText(MyService.this,“i is:+i,Toast.LENGTH\u SHORT).show();
}
Toast.makeText(MyService.this,“最终我是:+i,Toast.LENGTH\u SHORT.show();
}
});
}
}

并请求为Android服务、后台任务、广播接收器的初学者提供一些非常有用的资源。我得到了developer.Android.com(对初学者不太有用),www.vogella.com等。提前感谢。

我相信,您之所以只看到I的前几个值,是因为android不允许应用程序向toast队列发送垃圾邮件

正如@davidwasser在评论中提到的,Toast不是一个可靠的调试工具。 改用logcat:

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

我相信,之所以您只看到I的前几个值,是因为android不允许应用程序向toast队列发送垃圾邮件

正如@davidwasser在评论中提到的,Toast不是一个可靠的调试工具。 改用logcat:

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

我的第一反应是,您正在重载Toast。(我可能错了)。请尝试使用
Log.v(“我的服务”,“我是:”+String.valueOf(I))
。要查看代码是否有效,请运行它并检查logcat:)所有值都显示在日志cat中!但是为什么不在祝酒辞中呢!?Toast对于调试来说是不可靠的。我想我会继续,然后发布答案。我的第一反应是,您正在重载Toast。(我可能错了)。尝试使用
Log.v(“我的服务”,“我是:”+String.valueOf(i))
。要查看代码是否工作,请运行它并检查logcat:)所有值都显示在logcat中!但是为什么不在祝酒辞中呢!?Toast对于调试来说是不可靠的。我想我会继续,然后发布答案