android的server
㈠ AndroidServer 是什麼東西怎麼刪除啊
AndroidServer.exe是騰訊公司的產品進程,如果您安裝了騰訊旗下應用寶(原qq手機管家PC版)和電腦管家,並且將安卓手機連接了PC機,該進程就會出現並開機啟動,後來在新版QQ中騰訊又加入了此進程。
打開任務管理器找到AndroidServer.exe後結束它,並打開所在目錄將其刪除。
可以使用一些第三方軟體如管家之類的,進行卸載或強制粉碎。
㈡ android程序設計中如何注冊server
直接在AndroidManifest 里增加一個service節點即可。
android中Service是運行在後台的東西,級別與activity差不多。既然說service是運行在後台的服務,那麼它就是不可見的,沒有界面的東西。可以啟動一個服務Service來播放音樂,或者記錄地理信息位置的改變,或者啟動一個服務來運行並一直監聽某種動作。Service和其他組件一樣,都是運行在主線程中,因此不能用它來做耗時的請求或者動作。
服務一般分為兩種:
1:本地服務, Local Service 用於應用程序內部。在Service可以調用Context.startService()啟動,調用Context.stopService()結束。在內部可以調用Service.stopSelf() 或 Service.stopSelfResult()來自己停止。無論調用了多少次startService(),都只需調用一次stopService()來停止。
2:遠程服務, Remote Service 用於android系統內部的應用程序之間。可以定義介面並把介面暴露出來,以便其他應用進行操作。客戶端建立到服務對象的連接,並通過那個連接來調用服務。調用Context.bindService()方法建立連接,並啟動,以調用 Context.unbindService()關閉連接。多個客戶端可以綁定至同一個服務。如果服務此時還沒有載入,bindService()會先載入它。
㈢ AndroidServer.exe這個進程如何結束,阻止其自動啟動
開始運行「CMD」確定,然後輸入以下命令:reg
add
"HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Image
File
Execution
Options\AndroidServer.exe"
/v
debugger
/t
reg_sz
/d
debugfile.exe
/f
執行完了,結束AndroidServer.exe,是不是不啟用了。。。
㈣ Android 中如何在server 中動態注冊廣播。
在Service中的onStartCommand中動態注冊廣播。
如下代碼:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter = new IntentFilter(Intent.ACTION_TIME_TICK); //注冊IntentFilter
filter.setPriority(Integer.MAX_VALUE); //設置級別
receiver = new AppReceiver();//本地服務
registerReceiver(receiver, filter);//注冊廣播
return START_STICKY;
}
廣播代碼:
package com.sevencolorbox.sdk.service;
import java.util.List;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class AppReceiver extends BroadcastReceiver{
private boolean isServiceRunning = false;
private String serviceName = "com.sevencolorbox.sdk.service.SevenColorService";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_TIME_TICK)){
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningServiceInfo> infos = am.getRunningServices(Integer.MAX_VALUE);
for (RunningServiceInfo info : infos) {
if (info.service.getClassName().equals(serviceName)) {
isServiceRunning = true;
}
}
if (!isServiceRunning) {
Log.i("ss", "本地服務未開啟");
Intent tIntent = new Intent(context,SevenColorService.class);
context.startService(tIntent);
}
}
}
}
㈤ androidserver.exe佔用cpu過高
mediaserver是android中一個非常重要的進程,音頻,視頻,camera都和mediaserver進程有關,它啟動的服務有:
"media.audio_flinger",
"media.player",
"media.camera",
"media.audio_policy"。
具體參考:創建mediaserver的過程
所以,如果mediaserver的cpu佔有率很高(一般超過60%)的話,一般是因為播放聲音,視頻,或者啟動camera拍照錄像導致的。
但具體原因卻不清,或者說導致問題的原因是多樣的,可能每次發生mediaserver cpu佔用率高時的原因都不一樣。可以確定的是和音視頻的播放錄制有關,涉及的具體代碼還需待查。
下面是從網上收集的一些分析,導致問題的原因也是多種多樣:
mediaserver佔用大量CPU問題
Issue 6765: "Mediaserver" consuming ~100% CPU time after failing to play streaming videos
Issue 18115: Process "Mediaserver" uses too much battery.
㈥ 深入理解Android:SystemServer進程的作用
看了一段時間關於SystemServer進程的博客,有點小理解,寫一篇關於SystemServer的小筆記,然後走一遍過程。
ZygoteInit通過startSystemServer方法fork了一個SS進程。這個進程有啥作用呢。
handlerSystemServerProcess()方法只要是以下三個方法:
其中 applicationInit() 很有意思很重要。該方法中有一個,invokeStaticMain方法通過反射調用main方法:
run方法最終通過反射調用SystemServer的main方法,作用是:
通過以上分析其實main方法的主要作用是:
1、調整系統時間
2、設置屬性persist.sys.dalvik.vm.lib.2的值為當前虛擬機的運行庫路徑
3、裝載libandroid_servers.so庫,初始化native層service
4、初始化系統Context
5、創建SystemServiceManager對象
6、調用startBootstrapServices(),startCoreServices(),startOtherServices()啟動所有的Java服務
另外也可以看到為什麼說handler默認是主線程,以及android 應用本身就是基於handler/Looper/Message的
startBootstrapServices():啟動java層的各種服務。framwork層的服務。例如AMS
startCoreServices:啟動核心服務:
startOtherServices也與上面一樣啟動各種服務。
總結下:SystemServer進程最終會執行到SystemServer類中的main方法中,初始化各種伺服器,其中第一個初始化的就是ActivityManagerService。當我們點擊啟動app的時候。Zygote會對這個消息進行處理,最終執行到applicationInit。那麼是在哪裡調用方法啟動應用的呢?