Android 如何在不中断活动的情况下从活动调用服务?

Android 如何在不中断活动的情况下从活动调用服务?,android,android-service,Android,Android Service,我创建了一个包含按钮的简单活动。单击按钮时,将显示祝酒词。此外,我还编写了一个服务,应该在应用程序启动时调用它。因此,我使用了以下代码 startService(新意图(getApplicationContext(),MyService.class)) 在OnCreate()方法中。当应用程序启动时,服务会被调用,它正在工作,但不是当前活动。我理解使用intent可以将应用程序导航到服务。我想不出如何使这两件事都起作用。提前感谢。可以从主活动的onCreate(Bundle)方法启动服务。在您的

我创建了一个包含按钮的简单活动。单击按钮时,将显示祝酒词。此外,我还编写了一个服务,应该在应用程序启动时调用它。因此,我使用了以下代码

startService(新意图(getApplicationContext(),MyService.class))


在OnCreate()方法中。当应用程序启动时,服务会被调用,它正在工作,但不是当前活动。我理解使用intent可以将应用程序导航到服务。我想不出如何使这两件事都起作用。提前感谢。

可以从主活动的onCreate(Bundle)方法启动服务。在您的案例中,主要活动应该是SimpleActivity。我刚刚创建了一个测试项目,活动和服务都可以正常工作。您是否在AndroidManifest.xml中注册了活动,并在活动的onCreate方法中调用了super.onCreate和setContentView?

我的错误是没有在单独的线程中运行该服务。我改正了:)谢谢你的帮助

如果您的服务运行在不同的线程中,活动不会被中断,这取决于您使用的服务类型。您的服务类扩展哪个类?我的类扩展服务类。我也尝试过从另一个线程调用该服务。如果线程工作,则活动不工作。UI只是死机你不必从单独的线程调用服务,你必须让服务在单独的线程中运行,因为在服务中应该创建一个线程来执行其操作当我从主活动调用服务时,服务正在执行,但不是UI中的按钮。我认为这不是启动服务造成的。要证明它是否正确,只需注释或删除行startService(…),然后再次运行。如果按钮仍然不在那里,那么问题不是由启动服务引起的。我认为问题不在于按钮的可见性,而在于它的单击,这是不起作用的,这是因为服务在ui线程上运行。我刚刚阅读了您对Ashish的回复,现在我猜您的服务正在做一些耗时的工作,如“while(xxx)”{xxxxx}”。如果是这种情况,您应该在服务中启动一个新线程来执行耗时的操作。