Java 服务无法正常工作
我试图学习可以更新UI的服务和后台线程,这里,这个服务是通过调用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
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对于调试来说是不可靠的。我想我会继续,然后发布答案