Pro Android with Kotlin


Download 5.42 Mb.
Pdf ko'rish
bet44/223
Sana04.11.2023
Hajmi5.42 Mb.
#1746807
1   ...   40   41   42   43   44   45   46   47   ...   223
Bog'liq
@de android telegram Pro Android with Kotlin Developing Modern Mobile

35
CHAPTER 4: Services
The previous code starts the service automatically once you bind to it and it doesn’t exist 
yet. This happens by virtue of this statement:
val flags = BIND_AUTO_CREATE
[...]
If you don’t need it because you are sure the service is running, you can omit it. In most 
cases, it is however better to include that flag. The following are the other flags you can use 
for setting binding characteristics:

BIND_AUTO_CREATE: We just used that; it means the service gets started 
automatically if it hasn’t started yet. You’ll sometimes read that explicitly 
starting a service is unnecessary if you bind to it, but this is true only if 
you set this flag.

BIND_DEBUG_UNBIND: This leads to saving the callstack of a following 
unbindService(), just in case subsequent unbind commands are 
wrong. If this happens, a more verbose diagnostic output will be shown. 
Since this imposes a memory leak, this feature should be used only for 
debugging purposes.

BIND_NOT_FOREGROUND: This is applicable only if the client runs in a 
foreground process and the target service runs in a background 
process. With this flag, the binding process will not raise the service to a 
foreground scheduling priority.

BIND_ABOVE_CLIENT: With this flag, we specify that the service is more 
important than the client (i.e., service invoker). In case of a resource 
shortage, the system will kill the client prior to the service invoked.

BIND_ALLOW_OOM_MANAGEMENT: This flags tell the Android OS that you are 
willing to accept Android treating the binding as noncritical and killing 
the service under low memory circumstances.

BIND_WAIVE_PRIORITY: This flags leads to leaving the scheduling of the 
service invocation up to the process where the service runs in.
Just add them in a combination that suits your needs.
Note Binding is not possible from inside a BroadcastReceiver component, unless 
the BroadcastReceiver has been registered via registerReceiver(receiver.
intentfilter). In the latter case, the lifetime of the receiver is tied to the registering component. 
You can, however, from broadcast receivers pass instruction strings inside the intent you used for 
starting (in other words, not binding) the service.



Download 5.42 Mb.

Do'stlaringiz bilan baham:
1   ...   40   41   42   43   44   45   46   47   ...   223




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling