android重啟服務
Ⅰ 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中怎麼啟動關閉Service及功能解釋
啟動:
//首先注冊服務
<service
android:name="com.wangdeyu.service.MusicService"
android:exported="false" >
<intent-filter>
<action android:name="com.abc" />
</intent-filter>
</service>
//啟動服務
Intent service=new Intent(" com.abc");
startService(service);
//Service生命周期
①onCreate() 創建Service
②onStart(Intent intent, int startId) 啟動Service
③onDestroy() 銷毀Service
//關閉服務
stopService(service);
Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy
我們有兩種方式啟動一個Service,他們對Service生命周期的影響是不一樣的。
1 通過startService,就是上面這種
Service會經歷 onCreate --> onStart
stopService的時候直接onDestroy
如果是 調用者 直接退出而沒有調用stopService的話,Service會一直在後台運行。
下次調用者再起來仍然可以stopService。
2 通過bindService
Service只會運行onCreate, 這個時候 調用者和Service綁定在一起
調用者退出了,Srevice就會調用onUnbind-->onDestroyed
所謂綁定在一起就共存亡了。
注意:Service的onCreate的方法只會被調用一次,
就是你無論多少次的startService又 bindService,Service只被創建一次。
如果先是bind了,那麼start的時候就直接運行Service的onStart方法,
如果先是start,那麼bind的時候就直接運行onBind方法。如果你先bind上了,就stop不掉了,
只能先UnbindService, 再StopService,所以是先start還是先bind行為是有區別的。
Android中的服務和windows中的服務是類似的東西,服務一般沒有用戶操作界面,它運行於系統中不容易被用戶發覺,可以使用它開發如監控之類的程序。
服務不能自己運行,需要通過調用Context.startService()或Context.bindService()方法啟動服務。
這兩個方法都可以啟動Service,但是它們的使用場合有所不同。使用startService()方法啟用服務,調用者與服務之間沒有關連,
即使調用者退出了,服務仍然運行。使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有「不求同時生,必須同時死」的特點。
如果打算採用Context.startService()方法啟動服務,在服務未被創建時,系統會先調用服務的onCreate()方法,
接著調用onStart()方法。如果調用startService()方法前服務已經被創建,多次調用startService()方法並不會導致多次創建服務,
但會導致多次調用onStart()方法。採用startService()方法啟動的服務,只能調用Context.stopService()方法結束服務,服務結束時會調用onDestroy()方法。
如果打算採用Context.bindService()方法啟動服務,在服務未被創建時,系統會先調用服務的onCreate()方法,
接著調用onBind()方法。這個時候調用者和服務綁定在一起,調用者退出了,系統就會先調用服務的onUnbind()方法,
接著調用onDestroy()方法。如果調用bindService()方法前服務已經被綁定,
多次調用bindService()方法並不會導致多次創建服務及綁定(也就是說onCreate()和onBind()方法並不會被多次調用)。
如果調用者希望與正在綁定的服務解除綁定,可以調用unbindService()方法,調用該方法也會導致系統調用服務的onUnbind()-->onDestroy()方法.
Ⅲ android中當Service在運行時怎麼重啟Service
只需要重新startService即可重新調用service的onStart()。
Service是在一段不定的時間運行在後台,不和用戶交互應用組件。每個Service必須在manifest中 通過<service>來聲明。可以通過contect.startservice和contect.bindserverice來啟動。
Service和其他的應用組件一樣,運行在進程的主線程中。這就是說如果service需要很多耗時或者阻塞的操作,需要在其子線程中實現。
service的兩種模式(startService()/bindService() :
1.本地服務 Local Service 用於應用程序內部。
它可以啟動並運行,直至有人停止了它或它自己停止。在這種方式下,它以調用Context.startService()啟動,而以調用Context.stopService()結束。它可以調用Service.stopSelf() 或 Service.stopSelfResult()來自己停止。不論調用了多少次startService()方法,你只需要調用一次stopService()來停止服務。
用於實現應用程序自己的一些耗時任務,比如查詢升級信息,並不佔用應用程序比如Activity所屬線程,而是單開線程後台執行,這樣用戶體驗比較好。
2.遠程服務 Remote Service 用於android系統內部的應用程序之間。
它可以通過自己定義並暴露出來的介面進行程序操作。客戶端建立一個到服務對象的連接,並通過那個連接來調用服務。連接以調用Context.bindService()方法建立,以調用 Context.unbindService()關閉。多個客戶端可以綁定至同一個服務。如果服務此時還沒有載入,bindService()會先載入它。
Ⅳ android 怎樣啟動後台服務
後台服務就是後台運行的意思,只要單擊任務欄上代表這程序的按鈕,原來後台運行的程序就會到前台來,前台運行的程序就會到後台去了。如下圖所示。
Windows 7可以打開幾個窗口,每個任務分配一個窗口,各個窗口可以重疊、排開、放大、縮小、移動等,可以方便地在各打開的窗口間切換,各個打開的應用程序共享電腦資源,多任務環境對用戶是透明的,每個任務都可以按前台、後台和獨佔三種方式進行。
多任務並存時,打開一個窗口後,在任務欄的空白處單擊滑鼠右鍵,然後在彈出的快捷菜單中可以選擇層疊、橫向平鋪或縱向平鋪等。
當Windows 7打開了幾個窗口時,實際上只有一個是你可以對它進行操作的窗口,叫做當前活動窗口。在所有打開窗口的最前面,標題欄底色為深色的窗口為當前活動窗口。單擊任務欄上的按鈕,或按下換檔鍵加製表鍵,即可以把這個窗口切換為當前活動窗口。
任何已經打開,不在前台運行的窗口,在後台仍然是活動的,佔用內存和中央處理器等系統資源,所以,從這個意義上來說,長時間不用的窗口要及時關閉,方法是單擊應用程序窗口標題欄右上角的關閉按鈕。
;一個應用程序,無論是否最小化,在任務欄上都會以按鈕的形式顯示出來,當前活動窗口的應用程序的按鈕呈凹陷形狀,其餘呈隆起形狀。因此,判斷一個窗口是否關閉,只要看其是否還在任務欄中即可。
Ⅳ android 如何讓service被管理器殺死後自動重啟
在ondestory生命周期裡面 startService,這樣他就永遠干不掉該service了。一被銷毀就重啟
Ⅵ android中ondestory 重啟了service 怎麼進行關閉
滿意 解答 這是因為你誤刪了手機自帶的系統軟體的原因 如果你想刪除 手機上自帶的一些沒有用的軟體 建議安裝360 你刪除的軟體如果是主要的 你還可以還原 如果你現在刪除的沒有備份 不好意思哪只有從新刷機。
Ⅶ 安卓service關閉後怎麼自動重啟
首先申明service關閉有兩種情況:
1、程序進入後台,系統可能會銷毀應用,可以理解為android端監聽推送消息的服務在啟動後是一直在後台運行的,但是當內存不足時,或者第三方應用清理內存時會殺死後台服務,此時該服務需要自動重啟。
該問題只需要在推送服務的onStartCommand方法返回類型設置成START_STICKY,官方文檔對此的解釋是:public static final int START_STICKY = 1;
大致意思是,在服務被系統殺死時會重新被創建,onStartCommand方法會被調用,但是需要注意的是,在調用onStartCommand時傳入的intent值可能為空,如果該方法中會用到該參數需要特別注意。
設置該參數可以解決第三方應用在清理內存時或者內存不足時殺掉推送服務之後重啟推送服務。
2、服務被用戶在應用管理-》正在運行中點擊「停止」銷毀該服務,服務不能重啟。
當用戶執行該操作時,服務中的onDestory方法被調用。所以我們可以在onDestory方法中再次啟動服務。但是此方案不能解決用戶在應用管理-》已下載中,強行停止該應用程序時服務被關閉後重啟,對比騰訊新聞,同等條件下,該問題也存在,即不能重啟服務。
Ⅷ android7.0 怎樣啟動service
安卓7.0開啟夜間模式介紹: Android 7.0正式版已經發布,然而此前在開發者預覽版中的一些功能遭到了閹割,最終沒有在正式版中加入,其中之一便是夜間模式。而實際上,安卓7.0正式版中是有這個功能的,只不過被谷歌隱藏了而已。 Reddit網站上的帖子表示,安卓7.0正式版隱藏了夜間模式的功能,可通過一些ADB命令開啟,但普通消費者並不懂怎樣使用ADB命令,現在有開發者專門開發了一個開啟安卓7.0隱藏夜間模式的APP,放在谷歌商店供下載。 用戶只需要安裝這款APP,然後點擊打開夜間模式功能按鈕,之後去快速啟動欄按住設置圖標,進入系統調諧器界面開啟夜間模式功能即可。 值得一提的是,通過安卓6.0.1升級到Android 7.0牛軋糖的用戶無法使用以上方法打開夜間模式,只有從以前的開發者預覽版升級到Android 7.0牛軋糖正式版的手機才可以。 既然夜間模式的代碼仍然在安卓7.0正式版中,我們估計谷歌會在未來合適的時候正式放開這個功能。
Ⅸ 怎麼查看Android設備中的啟動服務
今天給大家的小例子是列出Android設備中所有啟動的服務,及判斷某個服務是否開啟,具體步驟如下了:
第一步:新建一個Android工程,命名為RunningService。
第二步:修改RunningService.java代碼如下:
package com.tutor.runningservice;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.os.Bundle;
import android.widget.TextView;
public class RunningService extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
TextView mTextView = new TextView(this);
ActivityManager mActivityManager =
(ActivityManager)getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> mServiceList = mActivityManager.getRunningServices(30);
//我要判斷的服務名字,我在launcher2里加了一個音樂服務
final String musicClassName = "com.android.launcher2.MusicService";
boolean b = MusicServiceIsStart(mServiceList, musicClassName);
mTextView.setText("你要判斷的服務狀態為: " +b+"/n" + getServiceClassName(mServiceList));
setContentView(mTextView);
}
//通過Service的類名來判斷是否啟動某個服務
private boolean MusicServiceIsStart(List<ActivityManager.RunningServiceInfo> mServiceList,String className){
for(int i = 0; i < mServiceList.size(); i ++){
if(className.equals(mServiceList.get(i).service.getClassName())){
return true;
}
}
return false;
}
//獲取所有啟動的服務的類名
private String getServiceClassName(List<ActivityManager.RunningServiceInfo> mServiceList){
String res = "";
for(int i = 0; i < mServiceList.size(); i ++){
res+=mServiceList.get(i).service.getClassName()+ " /n";
}
return res;
}
}
第三步:運行上述工程,查看效果!
Ⅹ 如何在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了。