是否有可能创建一个服务而不启动它?
我想知道,是否可以创建Service
,设置一些数据,然后启动它?我还没有遇到特定于此问题的线索,所以我想知道是否有可能(如果它是已知的)。是否有可能创建一个服务而不启动它?
我的问题是我有一个Service
它听一DatagramSocket
,但需要在创建后,但在Service
开始之前设置有问题的套接字。套接字的设置通过使用Broadcast
(我广播2 Strings
,其中包含IP地址&端口和BroadcastReceiver
然后为我构建套接字)发生。
当Service
启动时,Thread
将开始运行并收听假定创建的套接字。可悲的是,这并没有发生。套接字将保持null
,当Thread
正在运行时,我无法设置它(这是我希望将来要解决的另一个问题,如果有人对此有任何想法,请通知我)。
那么,我想要什么,或者我应该想出另一种实现这个目标的构想?
我现在用另一种方式解决了问题,我在Service class
的onCreate
方法中创建了DatagramSocket
。但我仍然使用BroadcastReceiver
来更新socket
。
在进一步注:Service
创建Thread
,它使用socket
,所以我不得不编辑socket
之前挂起Thread
。我已经使用volatile boolean
(它强制所有使用它的Objects
,使用最近更新的版本或其他东西,我不是专家)暂停Thread
。 Thread
调用wait()
方法挂起。将其从wait()
中取出需要设置boolean
的值,并调用notify()
。停止线程是通过修改另一个volatile
变量,然后调用Thread
上的interrupt()
方法来将其从任何sleep()
例程中取出。最终这会导致Thread
完成它的run()
方法。
对不起,如何我停止或暂停/恢复Thread
,但它确实有用,知道如果你不知道如何做到这一点......我花了一段时间才发现,所以我想我会分享给你...
我想知道,是否可以创建一个服务,设置一些数据,然后启动它?
号
我的问题是,我有听一个DatagramSocket服务,但需要创建后,设置有问题的插座,但服务开始之前。
对不起,你想要什么是不可能的。
插座的设置,结果会通过使用广播的(我播2串持有的IP地址&港和广播接收器,然后构建一个插座对我来说)。
为什么不能消除所有的BroadcastReceiver
和使用startService()
通过Intent
群众演员通过IP地址和端口的Service
?
我很猜这里,但是当你在AndroidMainfest.xml
中定义你的服务时,你可以设置它的android:enabled
属性。是否有可能以编程方式禁用服务 - >创建它的一个实例 - >按照您认为合适的方式初始化它 - >然后启用并启动它?
因为我希望套接字是可编辑的。当我在配置活动中设置不同的端口时,我希望套接字使用新端口进行更新,因此广播... – ThaMe90 2011-02-17 12:49:02
@ ThaMe90:使用`SharedPreferences`和`OnSharedPreferenceChangeListener`。 – CommonsWare 2011-02-17 12:59:36