導航:首頁 > 操作系統 > android服務

android服務

發布時間:2022-01-14 10:21:53

androidService是什麼

Service就是一個應用程序組件,用來執行一些長時間的操作,然而不與用戶交互或者為其他應用程序提供一些功能。每一個Service類都必須定義在AndroidManifest.xml中,以<service>tag開頭。

⑵ 如何在android系統中開啟自己的服務

Android開機啟動Service,需要使用BroadcastReceiver,Android系統,開機會發送一個開機廣播,可以通過BroadcastReceiver來接收開機廣播。
具體代碼:
1.在配置文件AndroidManifest.xml中向系統注冊receiver
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>

2.需要添加相應許可權
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

3.在Receiver中就可以添加開機需要進行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

}
}

4.執行開機後的操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 這樣即可開機啟動Service了。

⑶ android服務和進程的區別

他們之間的區別:Service很大程度上充當了應用程序後台線程管理器的角色。(如果Activity中新開啟一個線程,當該Acitivyt關閉後,該線程依然在工作,但是與開啟它的Activity失去聯系。也就是說此時的這個線程處於失去管理的狀態。但是使用Service,則可以對後台運行的線程有效地管理。)
一個服務不是一個單獨的進程。服務對象本身並不意味著它是在自己的進程中運行,除非另有規定,否則它與運行程序是同在一個進程中。
一個服務不是一個單獨的線程。Service和其他組件一樣,默認情況下,Service中的所有代碼都是運行在主線程中。
在android中,為什麼不使用後台線程而使用Service? 有3大要點:
1、Service可以放在獨立的進程中,所以更安全;

2、使用Service可以依賴現有的binder機制,不需要在應用層面上處理線程同步的繁雜工作;

3、系統可以重新啟動異常死去的Service。

說明:進程是由若干線程組成。(線程是進程中的一部分,進程包含多個線程在運行。)

⑷ android service有什麼用

Service是Android系統中的四大組件之一,它是一種長生命周期的,沒有可視化界面,運行於後台的一種服務程序。如果service是被開啟的,那麼它的活動生命周期和整個生命周期一同結束。如果service是被綁定的,它們它的活動生命周期是在onUnbind()方法返回後結束。

service積極活動的生命時間(active lifetime)是從onStartCommand()或onBind()被調用開始,它們各自處理由startService()或bindService()方法傳過來的Intent對象。

(4)android服務擴展閱讀

service整體的生命時間是從onCreate()被調用開始,到onDestroy()方法返回為止。和activity一樣,service在onCreate()中進行它的初始化工作,在onDestroy()中釋放殘留的資源。

比如,一個音樂播放service可以在onCreate()中創建播放音樂的線程,在onDestory()中停止這個線程。onCreate()和onDestroy()會被所有的service調用,不論service是通過startService()還是bindService()建立。

⑸ android 如何啟動自己的c服務

01
首先,要在你的activity中啟動這個服務,代碼如下所示。
/*
* 啟動一個延遲線程
*/
Intent serviceIntent=new Intent();
serviceIntent.setClass(Welcome.this, HoutaiService.class);
startService(serviceIntent);
>02
這個時候你就要去寫你的服務了,如下圖所示,這是和寫的一個服務。
>03
注意,因為後台當中是沒有界面的,所以不需要繼承activity。但這個候你就會遇到一個問題就是如何與用戶互動呢,那麼下面就是一個方法。
代碼如下。
NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//2.實例化一個通知,指定圖標、概要、時間
Notification n=new Notification(R.drawable.ic_launcher,"智能退出",System.currentTimeMillis());
//3.指定通知的標題、內容和intent
Intent intent = new Intent();
PendingIntent pi= PendingIntent.getActivity(HoutaiService.this, 0, intent, 0);
n.setLatestEventInfo(HoutaiService.this, "你已連續使用網路超3小時", "為防止長時間空閑網路,已退出。如需打開,請重新打開應用", pi);
//指定聲音
n.defaults = Notification.DEFAULT_SOUND;
//4.發送通知
nm.notify(3, n);
>04
這段代碼的意思是通過安卓中的通知來與用戶進行交互。能夠達到提示用戶的目的,怎麼樣,是不是很簡單。

⑹ android中服務存在的意義

服務一般用於長時間的工作,看需要,有的服務會跟隨APP存在,有的是綁定頁面。服務執行完了會存在那邊,如果繼續調用只是不會new出來,可以去查下相關的資料。

⑺ Android中Service服務有哪些

Service分為本地服務(LoaclService)和遠程服務(RemoteService)。
本地服務:用於應用程序內部,這也與客戶端(可以理解也activity)進行通信就很方便。
遠程服務:用於android系統內部的應用程序之間。

⑻ android service有幾種

Service的生命周期Service的生命周期方法比Activity少一 些,只有onCreate,onStart,onDestroy 我們有兩種方式啟動一個Service,他們對Service生命周期 的影響是不一樣的。 1;通過startService: Service會經歷onCreate->onStart, stopService的時候直接onDestroy如果是調用者(TestServiceHolder)自己直接退出而沒有調用stopService的話,Service會一直在後台運行。下次TestServiceHolder再起來可以stopService。 2:通過bindService: Service只會運行onCreate,這個時候TestServiceHolder和TestService綁定在一起 TestServiceHolder退出了,Srevice就會調用onUnbind->onDestroyed所謂綁定在一起就共存亡了。 那有同學問了,要是這幾個方法交織在一起的話,會出現什麼情況呢? 一個原則是Service的onCreate的方法只會被調用一次,就是你無論多少次的 startService又bindService,Service只被創建一次。如果先是bind了,那麼start的時候就直接運行Service的onStart方法,如果先是start,那麼bind的時候就直接運行onBind方法。如果你先bind上了,就 stop不掉了,對啊,就是stopService不好使了,只能先UnbindService,再StopService, 所以是先start還是先bind行為是有區別的。

⑼ 如何創建android系統服務

1、 撰寫一個aidl文件,定義服務的介面,將在編譯過程中通過aidl工具生成對應的java介面。一般系統服務的aidl文件都放在framework\base\core\java\android\os目錄中。

以我所寫的IMyTool.aidl為例。在.aidl中定義自己需要加入的方法,編寫規則和java介面差不多,這里不多說。

2、 將aidl文件名添加到frameworks\base\目錄下的Android.mk編譯腳本文件中。

如:

LOCAL_SRC_FILES += \

core/java/android/accessibilityservice/.aidl\

…\

core/java/android/os/IMyTool.aidl\



IMyTool.aidl即我加進去的aidl文件,加入後才能在make過程中編譯到,否則將在後面的SystemServer添加系統服務時會報錯提示找不到對應類。

3、 編寫真正工作的服務類,繼承IMyTool.Stub類(AIDL文件名.Stub,aidl生成的介面中的內部類,是一個Binder)。

服務類一般都放在framework\base\services\java\com\android\server目錄中。

例如:

public class MyToolService extends IMyTool.Stub {

實現IMyTool.aidl中定義的介面。

}

4、 將自定義服務注冊到SystemServer,使得開機過程中被添加。

在framework\base\services\java\com\android\server目錄中的SystemServer中啟動服務代碼處加入:

try {

Slog.i(TAG, "MyToolService");

ServiceManager.addService(Context.MY_TOOL_SERVICE,new MyToolService(context));// MyToolService構造函數自己定義,一般都會用到Context

} catch(Throwable e) {

Slog.e(TAG, "Failure startingMyToolService", e);

}

上面代碼中Context.MY_TOOL_SERVICE是自己在Context類中定義的常量,也就是給服務定義的名字,使用常量方便獲取服務,而不需要記住注冊服務時用的名字,且想換名字時只需改一個常量的值。

⑽ Android中的Service到底起什麼作用

Service 是android的一種機制,當它運行的時候如果是Local Service,那麼對應的 Service 是運行在主進程的 main 線程上的。如:onCreate,onStart 這些函數在被系統調用的時候都是在主進程的 main 線程上運行的。如果是Remote Service,那麼對應的 Service 則是運行在獨立進程的 main 線程上。因此請不要把 Service 理解成線程,它跟線程半毛錢的關系都沒有!

既然這樣,那麼我們為什麼要用 Service 呢?其實這跟 android 的系統機制有關,我們先拿 Thread 來說。Thread 的運行是獨立於 Activity 的,也就是說當一個 Activity 被 finish 之後,如果你沒有主動停止 Thread 或者 Thread 里的 run 方法沒有執行完畢的話,Thread 也會一直執行。因此這里會出現一個問題:當 Activity 被 finish 之後,你不再持有該 Thread 的引用。另一方面,你沒有辦法在不同的 Activity 中對同一 Thread 進行控制。

舉個例子:如果你的 Thread 需要不停地隔一段時間就要連接伺服器做某種同步的話,該 Thread 需要在 Activity 沒有start的時候也在運行。這個時候當你 start 一個 Activity 就沒有辦法在該 Activity 裡面控制之前創建的 Thread。因此你便需要創建並啟動一個 Service ,在 Service 裡面創建、運行並控制該 Thread,這樣便解決了該問題(因為任何 Activity 都可以控制同一 Service,而系統也只會創建一個對應 Service 的實例)。

因此你可以把 Service 想像成一種消息服務,而你可以在任何有 Context 的地方調用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,來控制它,你也可以在 Service 里注冊 BroadcastReceiver,在其他地方通過發送 broadcast 來控制它,當然這些都是 Thread 做不到的。

閱讀全文

與android服務相關的資料

熱點內容
精品php源碼 瀏覽:960
自己編寫雲伺服器搶紅包 瀏覽:203
java解壓縮文件加密 瀏覽:887
dlink列印伺服器默認地址 瀏覽:353
php休眠函數 瀏覽:372
金蝶如何打開伺服器 瀏覽:766
e4a手游輔助源碼 瀏覽:777
什麼app可以實時直播 瀏覽:106
蘋果13的app閃退什麼原因 瀏覽:775
尾盤選股源碼公式 瀏覽:450
php日期運算 瀏覽:931
天龍八部長歌伺服器什麼時候開的 瀏覽:199
鬼泣4模型在那個文件夾 瀏覽:229
單片機的串列口 瀏覽:58
phpjson轉化為數組 瀏覽:268
pdf導入excel 瀏覽:428
蘋果xsmax信任app在哪裡設置 瀏覽:53
自動外鏈php源碼 瀏覽:245
我的世界新手獎勵箱命令 瀏覽:146
linux更新vim 瀏覽:998