導航:首頁 > 操作系統 > androidnotifier

androidnotifier

發布時間:2022-11-21 23:48:01

android 怎麼解析tra文件

對於從事Android開發的人來說,遇到ANR(Application Not Responding)是比較常見的問題。一般情況下,如果有ANR發生,系統都會在/data/anr/目錄下生成trace文件,通過分析trace文件,可以定位產生ANR的原因。產生ANR的原因有很多,比如CPU使用過高、事件沒有得到及時的響應、死鎖等,下面將通過一次因為死鎖導致的ANR問題,來說明如何通過trace文件分析ANR問題。
對應的部分trace文件內容如下:
"PowerManagerService" prio=5 tid=24 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x41dd0eb0 self=0x5241b218
| sysTid=567 nice=0 sched=0/0 cgrp=apps handle=1380038664
| state=S schedstat=( 6682116007 11324451214 33313 ) utm=450 stm=219 core=1
at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:~13045)
- waiting to lock <0x41a874a0> (a com.android.server.am.ActivityManagerService) held by tid=12 (android.server.ServerThread)
at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1144)
at com.android.server.power.PowerManagerService$DisplayBlankerImpl.unblankAllDisplays(PowerManagerService.java:3442)
at com.android.server.power.DisplayPowerState$PhotonicMolator$1.run(DisplayPowerState.java:456)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.os.HandlerThread.run(HandlerThread.java:60)
"Binder_B" prio=5 tid=85 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x42744770 self=0x58329e88
| sysTid=3700 nice=-20 sched=0/0 cgrp=apps handle=1471424616
| state=S schedstat=( 1663727513 2044643318 6806 ) utm=132 stm=34 core=1
at com.android.server.power.PowerManagerService$DisplayBlankerImpl.toString(PowerManagerService.java:~3449)
- waiting to lock <0x41a7e420> (a com.android.server.power.PowerManagerService$DisplayBlankerImpl) held by tid=24 (PowerManagerService)
at java.lang.StringBuilder.append(StringBuilder.java:202)
at com.android.server.power.PowerManagerService.mp(PowerManagerService.java:3052)
at android.os.Binder.mp(Binder.java:264)
at android.os.Binder.onTransact(Binder.java:236)
at android.os.IPowerManager$Stub.onTransact(IPowerManager.java:373)
at android.os.Binder.execTransact(Binder.java:351)
at dalvik.system.NativeStart.run(Native Method)
"android.server.ServerThread" prio=5 tid=12 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x41a76178 self=0x507837a8
| sysTid=545 nice=-2 sched=0/0 cgrp=apps handle=1349936616
| state=S schedstat=( 15368096286 21707846934 69485 ) utm=1226 stm=310 core=0
at com.android.server.power.PowerManagerService.isScreenOnInternal(PowerManagerService.java:~2529)
- waiting to lock <0x41a7e2e8> (a java.lang.Object) held by tid=85 (Binder_B)
at com.android.server.power.PowerManagerService.isScreenOn(PowerManagerService.java:2522)
at com.android.server.wm.WindowManagerService.(WindowManagerService.java:7749)
at com.android.server.wm.WindowManagerService.setEventDispatching(WindowManagerService.java:7628)
at com.android.server.am.ActivityManagerService.updateEventDispatchingLocked(ActivityManagerService.java:8083)
at com.android.server.am.ActivityManagerService.wakingUp(ActivityManagerService.java:8077)
at com.android.server.power.Notifier.sendWakeUpBroadcast(Notifier.java:474)
at com.android.server.power.Notifier.sendNextBroadcast(Notifier.java:455)
at com.android.server.power.Notifier.access$700(Notifier.java:62)
at com.android.server.power.Notifier$NotifierHandler.handleMessage(Notifier.java:600)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at com.android.server.ServerThread.run(SystemServer.java:1328)
從trace文件看,是因為TID為24的線程等待一個TID為12的線程持有的鎖,TID為12的線程等待一個TID為85的線程持有的鎖,而TID為85的線程確等待一個TID為24的線程持有的鎖,導致了循環等待的現象,對應的trace文件的語句如下:
TID 24:- waiting to lock <0x41a874a0> (a com.android.server.am.ActivityManagerService) held by tid=12 (android.server.ServerThread)
TID 12: - waiting to lock <0x41a7e2e8> (a java.lang.Object) held by tid=85 (Binder_B)
TID 85:- waiting to lock <0x41a7e420> (a com.android.server.power.PowerManagerService$DisplayBlankerImpl) held by tid=24 (PowerManagerService)
既然是死鎖,那麼先看各線程都有那些鎖。
先看TID=24的線程的棧頂,ActivityManagerService的broadcastIntent函數代碼如下:
public final int broadcastIntent(IApplicationThread caller,
Intent intent, String resolvedType, IIntentReceiver resultTo,
int resultCode, String resultData, Bundle map,
String requiredPermission, boolean serialized, boolean sticky, int userId) {
enforceNotIsolatedCaller("broadcastIntent");
synchronized(this) {
intent = verifyBroadcastLocked(intent);
final ProcessRecord callerApp = getRecordForAppLocked(caller);
final int callingPid = Binder.getCallingPid();
final int callingUid = Binder.getCallingUid();
final long origId = Binder.clearCallingIdentity();
int res = broadcastIntentLocked(callerApp,
callerApp != null ? callerApp.info.packageName : null,
intent, resolvedType, resultTo,
resultCode, resultData, map, requiredPermission, serialized, sticky,
callingPid, callingUid, userId);
Binder.restoreCallingIdentity(origId);
return res;
}
可以看到TID=24需要ActivityManagerService這個鎖。再看TID=12線程的棧頂,PowerManagerService的isScreenOnInternal函數代碼如下:

private boolean isScreenOnInternal() {
synchronized (mLock) {
return !mSystemReady
|| mDisplayPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF;
}
}
可以看到需要PowerManagerService的mlock這個鎖。最後看TID=85線程的棧頂,同樣在PowerManagerService裡面,內部類DisplayBlankerImpl的toString函數:

public String toString() {
synchronized (this) {
return "blanked=" + mBlanked;
}
}
這是在內部類DisplayBlankerImpl裡面實現的,所以需要DisplayBlankerImpl這個鎖。
對應的表格如下:
表一 各線程等待的鎖情況
從表一來看,沒有出現死鎖現象,似乎並不是我們所想的那樣。難道不是死鎖?開始有點小懷疑自己了,難道別的原因導致的。也許只看調用堆棧的頂端可能不行,棧頂只能看出各線程需要的鎖,不能僅看自己要什麼吧!一味索取可不好!人不是這樣做的!看一下整個的堆棧調用流程,看看自己擁有了那些鎖。
跟蹤TID=24線程的堆棧,在PowerManagerService內部類DisplayBlankerImpl的unblankAllDisplays函數中持有鎖:
public void unblankAllDisplays() {
synchronized (this) {
nativeSetAutoSuspend(false);
nativeSetInteractive(true);
mDisplayManagerService.();
mBlanked = false;
///M: add for tvout and hdmi
mTvOut.tvoutPowerEnable(true);
mHDMI.hdmiPowerEnable(true);
///@}
if (DEBUG) {
Slog.d(TAG_P, "unblankAllDisplays out ...");
}
if (mBootCompleted) {
Intent intent = new Intent(ACTION_LOCK_SCREEN_SHOW);
mContext.sendBroadcast(intent);
}
}
}
最後發送廣播的代碼,是我們自己添加的。根據unblankAllDisplays函數和broadcastIntent函數,可以看到TID=24的線程此時持有了DisplayBlankerImpl鎖(unblankAllDisplays),等待ActivityManagerService鎖(broadcastIntent)釋放。
同樣,跟蹤TID=12線程的堆棧,在ActivityManagerService的wake_up函數中持有鎖:
public void wakingUp() {
if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Requires permission "
+ android.Manifest.permission.DEVICE_POWER);
}
synchronized(this) {
Slog.i(TAG, "wakingUp");
mWentToSleep = false;
updateEventDispatchingLocked();
comeOutOfSleepIfNeededLocked();
}
}
根據wakingUp函數和isScreenOnInternal函數,可以看到TID=12的線程持有ActivityManagerService鎖(wakingUp),等待PowerManagerService.mLock鎖(isScreenOnInternal)。到這,似乎看到了希望,迷霧要撥開了,有點小自信是死鎖導致的,但還不能最終下結論。
一鼓作氣,跟蹤TID=85線程的堆棧,在PowerManagerService的mp有持有鎖的操作:
protected void mp(FileDescriptor fd, PrintWriter pw, String[] args) {
....
synchronized (mLock) {
...
}
根據toString函數和mp函數,可以看到TID=85線程此時持有PowerManagerService.mLock鎖(mp),需要DisplayBlankerImpl(toString)。

② android的Progressbar怎麼用

Android提供的ProgressBar Widget控制項與ProgressDialog應用目標不同,在程序一開始即可在main.xml
Layout當中布局,先將部署在Layout里的ProgressBar的屬性設為隱藏(一開始看不見),而後使用進程來「假裝」程序忙碌中,但不同的是,可在進程當中取得運行時的進度,在「運行」的過程中,將運行進度通過TextView顯示出來。本範例除了學習ProgressBar
Widget的顯示及使用之外,另一個學習關鍵則是Handler的使用,因為新起的進程無法訪問Activity里的Widget,也無法將運行狀態外送出來,所以需要通過Handler及Message對象,將進程里的狀態往外傳遞,最後由Activity的Handler事件接收取得運行的狀態。

一、范常式序

src/irdc.ex04_17/EX04_17.java
為了讓Thread運行過程中,可以不斷地將信息往Activity傳遞,所以用了Android.os.Handler對象及Android.os.Message對象,且在類成員變數中聲明了兩個整數:GUI_STOP_NOTIFIER與GUI_THREADING_NOTIFIER,這兩個整數將作為信息傳遞出來時的信號標識,前者為當Thread需要喊停的時候處理,後者為進程正在運行過程中所需處理的標識。

程序中設計了一個按鈕,此按鈕的工作是讓原本部署在main.xml里的ProgressBar顯示出來(原來是設置為Android:visibility="gone"),而因為默認在main.xml中沒有指定它的indeterm-
inate屬性,所以即便在程序中強制調用了ProgressBar的setIndeterminate()方法,也無法改變ProgressBar.getProgress()的值,這個值將永遠為0。因此,筆者想要使用循環圖片動畫作為運行過程中的動畫,並用了一個Counter(整數)來遞增,表示運行的百分比。

代碼如下:

/* import程序略 */


public class EX04_17 extends Activity

{

private TextView mTextView01;

private Button mButton01;

private ProgressBar mProgressBar01;

public int intCounter=0;


/* 自定義Handler信息代碼,用以作為標識事件處理 */

protected static final int GUI_STOP_NOTIFIER = 0x108;

protected static final int GUI_THREADING_NOTIFIER = 0x109;


/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);


mButton01 = (Button)findViewById(R.id.myButton1);

mTextView01 = (TextView)findViewById(R.id.myTextView1);


/* 設置ProgressBar widget對象 */

mProgressBar01 = (ProgressBar)findViewById(R.id.myProgressBar1);


/* 調用setIndeterminate方法賦值indeterminate模式為false */

mProgressBar01.setIndeterminate(false);


/* 當單擊按鈕後,開始進程工作 */

mButton01.setOnClickListener(new Button.OnClickListener()

{

@Override

public void onClick(View v)

{

// TODO Auto-generated method stub


/* 單擊按鈕讓ProgressBar顯示 */

mTextView01.setText(R.string.str_progress_start);


/* 將隱藏的ProgressBar顯示出來 */

mProgressBar01.setVisibility(View.VISIBLE);


/* 指定Progress為最多100 */

mProgressBar01.setMax(100);


/* 初始Progress為0 */

mProgressBar01.setProgress(0);


/* 開始一個進程 */

new Thread(new Runnable()

{

public void run()

{

/* 默認0至9,共運行10次的循環語句 */

for (int i=0;i<10;i++)

{

try

{

/* 成員變數,用以識別載入進度 */

intCounter = (i+1)*20;

/* 每運行一次循環,即暫停1秒 */

Thread.sleep(1000);


/* 當Thread運行5秒後顯示運行結束 */

if(i==4)

{

/* 以Message對象,傳遞參數給Handler */

Message m = new Message();


/* 以what屬性指定User自定義 */

m.what = EX04_17.GUI_STOP_NOTIFIER;

EX04_17.this.myMessageHandler.sendMessage(m);

break;

}

else

{

Message m = new Message();

m.what = EX04_17.GUI_THREADING_NOTIFIER;

EX04_17.this.myMessageHandler.sendMessage(m);

}

}

catch(Exception e)

{

e.printStackTrace();

}

}

}

}).start();

}

});

}


/* Handler構建之後,會監聽傳來的信息代碼 */

Handler myMessageHandler = new Handler()

{

// @Override

public void handleMessage(Message msg)

{

switch (msg.what)

{

/* 當取得標識為離開進程時所取得的信息 */

case EX04_17.GUI_STOP_NOTIFIER:


/* 顯示運行終了 */

mTextView01.setText(R.string.str_progress_done);


/* 設置ProgressBar Widget為隱藏 */

mProgressBar01.setVisibility(View.GONE);

Thread.currentThread().interrupt();

break;


/* 當取得標識為持續在進程當中時所取得的信息 */

case EX04_17.GUI_THREADING_NOTIFIER:

if(!Thread.currentThread().isInterrupted())

{

mProgressBar01.setProgress(intCounter);

/* 將顯示進度顯示於TextView當中 */

mTextView01.setText

(

getResources().getText(R.string.str_progress_start)+

"("+Integer.toString(intCounter)+"%)/n"+

"Progress:"+

Integer.toString(mProgressBar01.getProgress())+

"/n"+"Indeterminate:"+

Boolean.toString(mProgressBar01.isIndeterminate())

);

}

break;

}

super.handleMessage(msg);

}

};

}

二、擴展學習
范常式序中,調用mProgressBar01.setIndeterminate(false),不顯示背景進度Bar,若設置為mProgressBar01.setIndeterminate(true),也無法讓默認的ProgressBar圖片(轉圈圈)有正確的進度提示,理由是默認的ProgressBar不支持indeterminate
mode循環圖片方式,所以即便setIn-
determinate(true)也無法正確顯示進度。在本程序中,為刻意寫出作為對照練習,一般在未知「進度」的情況下,可改用文字的方式顯示進度百分比,通過調用mProgressBar01.getProgress()取得運行進度值,顯示在文字中。請將Layout里的ProgressBar
Widget定義中,加上一個android:
indeterminateOnly屬性,指定其值為false,不顯示後台進度Bar.
如下所示:

③ Android-DataBinding原理分析

在MainActivity中,調用下面的方法:

appuildintermediatesdata_binding_layout_info_type_mergedebugout

可以看到,這里定義了多個Target標簽,這些Target的定義,其實就是定義對應的tag,將tag與activity_main.xml布局中的對應的View的id對應起來
經過DataBinding變化後的布局,會多出tag。
app/build/imtermediates/incremental/mergeDebugResources/stripped.dir/layout/activity_main.xml

其實DataBindingUtil的setContentView()方法,主要就是調用activity的setContentView設置布局,並且綁定添加對應的View

這里的sMapper是一個DataBinderMapper對象,其實現類是DataBinderMapperImpl
DataBinderMapperImpl是通過apt註解處理器生成的。
這里的sMapper.getDataBinder()其實就是調用的MergedDataBinderMapper的getDataBinder()方法
而sMapper中的數據,其實就是DataBinderMapperImpl的構造器中調用其父類MergedDataBinderMapper 的addMapper()方法添加的對象

在DataBinding中有兩個DataBinderMapperImpl類,一個是上面這個在androidx.databinding包下,繼承了MergedDataBinderMapper的,另一個是在com.example.databindingdemo應用包下,直接繼承DataBinderMapper。其實MergedDataBinderMapper也是繼承自DataBinderMapper

這里要注意兩點,就是如果是布局的頂層View,比如tag為layout/activity_main_0,那麼就會new一個ActivityMainBindingImpl對象。這個tag,其實可以從前面看到的app/build/imtermediates/incremental/mergeDebugResources/stripped.dir/layout/activity_main.xml布局中的LinearLayout的tag知道

在new出ActivityMainBindingImpl對象後,則進行一些View的綁定操作,將通過tag取出的View與ActivityMainBindingImpl中對應的View屬性進行綁定。

在這里,會調用了一個mapBindings方法,第三個參數是一個3,這個3的意思,就是activity_main.xml布局文件中有3個節點

mapBindings就會返回一個Object[] bindings數組。

這里的主要工作,就是將布局中的View保存在對應的bindings數組中,然後取出這個數組中的數據賦值給ActivityMainBindingImpl中的View

ActivityMainBindingImpl的父類ActivityMainBinding是在Eappuildgenerateddata_binding_base_class_source_包下

BR的作用: 其實BR的作用,就用BR中的屬性值來標記不同的操作需要的監聽在mLocalFieldObservers數組中的位置

這里的localFieldId=0,這個id其實就BR文件中的id,就是BR文件中對應的靜態final屬性的值。而第二個就是觀察者對象,比如傳入的ViewModel對象。

這里通過WeakListener監聽器中的ObservableReference對象保存觀察者與被觀察者,當被觀察者發生改變的時候,就會找到對應的WeakListener監聽器,然後通知觀察者做修改。
而ObservableReference方法的實現,有多個,比如:WeakPropertyListener。
這里讓WeakListener.setTarget()其實就是通過WeakPropertyListener給被觀察者添加callback,然後當被觀察者數據發生改變的時候,被觀察者通過遍歷其內部的PropertyChangeRegistry中的OnPropertyChangedCallback回調(其實就是WeakPropertyListener),然後通過WeakPropertyListener監聽通知給ViewDataBinding以及其實現類ActivityMainBindingImpl具體進行數據的處理和設置。

// 這里的mTarget其實是一個泛型T對象,而這個泛型是在WeakPropertyListener初始化WeakListener的時候傳入的一個Observable,這個是databinding中的Observable,其子類實現就是BaseObservable

WeakPropertyListener中的addListener方法,就會給Observable添加一個callback回調,向Observable這個被觀察者中添加callback的目的,就是在Observable數據發生變化的時候,遍歷Observable中的mCallbacks這個callback集合,通知觀察者進行修改。

從這第三步可以知道:

而WeakPropertyListener和WeakListener是相互持有的對方的引用。

在完成監聽的相互綁定關系,並且給Observable添加了回調之後,就會回到ActivityMainBindingImpl的setUser()方法繼續執行notifyPropertyChanged()方法。
但是這里的例子有個問題,就是監聽是添加在User這個BaseObservable的子類中的,但是更新的時候,並不是通過這個User來進行通知,而是根據ActivityMainBindingImpl這個BaseObservable來通知,那麼這個時候並不會通過ActivityMainBindingImpl的調用notifyPropertyChanged()最終拿到User中的PropertyChangeRegistry對象mCallbacks,所以起作用的並不是這句話。而最終ActivityMainBindingImpl在設置User起刷新作用,是因為super.requestRebind()的調用也觸發了mRebindRunnable任務的執行,其實就是沒有通過PropertyChange來觸發requestRebind()

這里其實就是調用的BaseObservable的notifyPropertyChanged()方法,因為ActivityMainBindingImpl是ViewDataBinding的子類,而ViewDataBinding繼承了BaseObservable類

這里的mNotifier.notifyCallback其實就會調用到下面的PropertyChangeRegistry中定義的NOTIFIER_CALLBACK 屬性中的onNotifyCallback實現,而這里的callback其實就是WeakPropertyListener,因為WeakPropertyListener是OnPropertyChangedCallback的子類,這里其實會回調給mLocalFieldObservers數組中所有的WeakListener

從mListener中取出target,而這里的mListener其實就是,WeakListener,而每個被觀察者,其實都是有一個對應的LocalFieldId,這個id就是BR文件中定義的,剛才的流程中,我們傳入的是0,所以這里的 mLocalFieldId=0

這里的onFieldChange的方法的實現,就是在ActivityMainBindingImpl.java中

這里因為fieldId=0,所以會進入第一個if條件if (fieldId == BR._all),所以會返回true,所以就會返回到ViewDataBinding.java中的handleFieldChange方法中,繼續執行requestRebind()

這里最終都會執行mRebindRunnable的run()方法。只不過SDK版本大於等於16的時候,會採用Choreographer編舞者來處理,而之前的版本則是採用Handler來執行。

在這里最終就會執行到executeBindings()方法,而該方法的實現,又是在ActivityMainBindingImpl.java中

如果自定義類繼承了BaseObservable類,則會更新注冊監聽。即BaseObservable保存PropertyChangeRegistry對象,該對象中會保存WeakPropertyListener監聽,而WeakPropertyListener監聽會持有WeakListener,WeakListener也會持有WeakPropertyListener,並且持有一個BaseObservable的target,這個target就是自定義的BaseObservable子類實現對象,在設置target的時候就會將WeakPropertyListener監聽給保存在這個target中的PropertyChangeRegistry對象中,當使用自定義的BaseObservable進行更新的時候,就可以通過監聽回調的方式通知到ActivityMainBindingImpl這些ViewDataBinding中,然後向ActivityMainBindingImpl解析得到的View實體中設置對應的數據。
通過WeakListener監聽器中的ObservableReference對象保存觀察者與被觀察者,當被觀察者發生改變的時候,就會找到對應的WeakListener監聽器,然後通知觀察者做修改。
而ObservableReference方法的實現,有多個,比如:WeakPropertyListener。
這里讓WeakListener.setTarget()其實就是通過WeakPropertyListener給被觀察者添加callback,然後當被觀察者數據發生改變的時候,被觀察者通過遍歷其內部的PropertyChangeRegistry中的OnPropertyChangedCallback回調(其實就是WeakPropertyListener),然後通過WeakPropertyListener監聽通知給ViewDataBinding以及其實現類ActivityMainBindingImpl具體進行數據的處理和設置。
其實就是向ViewModel或者自定義的Observable(是databinding中的Observable)的子類實現中的mCallbacks中添加監聽WeakPropertyListener,用於數據變化回調。而在WeakPropertyListener中的WeakListener對象會保存這個Observable為target,用於在更新的時候取出。

比如在xml布局的data中直接使用Boolean、Integer、String等類型
如果ActivityMainBindingImpl中設置的是比如ViewModel,那麼就需要看是否使用了LiveData修飾的屬性,如果沒有使用LiveData的,則並不會去更新注冊監聽信息,而只是重新保存ViewDataBinding中保存的數據實體,並且直接調用ActivityMainBinding中保存的View實體進行設置新的數據

如果是使用了LiveData的話,則會在調用LiveDataListener(這是一個Observer子類與上面的WeakPropertyListener類似)的addListener的時候,就會給LiveData注冊觀察者LiveDataListener,然後在LiveDataListener中的onChanged實現中通過調用ViewDataBinding的handleFieldChange方法觸發數據變化修改,進而更新View顯示的數據

④ 在android的linux驅動中,有probe函數,會在其中調用INIT_WORK,而在INIT_WORK的參數中會有一個函數

probe is called when driver initialization completed.
notify_event is uevent

⑤ android trace 文件怎麼分析

對於從事Android開發的人來說,遇到ANR(Application Not Responding)是比較常見的問題。一般情況下,如果有ANR發生,系統都會在/data/anr/目錄下生成trace文件,通過分析trace文件,可以定位產生ANR的原因。產生ANR的原因有很多,比如CPU使用過高、事件沒有得到及時的響應、死鎖等,下面將通過一次因為死鎖導致的ANR問題,來說明如何通過trace文件分析ANR問題。
對應的部分trace文件內容如下:
"PowerManagerService" prio=5 tid=24 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x41dd0eb0 self=0x5241b218
| sysTid=567 nice=0 sched=0/0 cgrp=apps handle=1380038664
| state=S schedstat=( 6682116007 11324451214 33313 ) utm=450 stm=219 core=1
at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.Java:~13045)
- waiting to lock <0x41a874a0> (a com.android.server.am.ActivityManagerService) held by tid=12 (android.server.ServerThread)
at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1144)
at com.android.server.power.PowerManagerService$DisplayBlankerImpl.unblankAllDisplays(PowerManagerService.java:3442)
at com.android.server.power.DisplayPowerState$PhotonicMolator$1.run(DisplayPowerState.java:456)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.os.HandlerThread.run(HandlerThread.java:60)

"Binder_B" prio=5 tid=85 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x42744770 self=0x58329e88
| sysTid=3700 nice=-20 sched=0/0 cgrp=apps handle=1471424616
| state=S schedstat=( 1663727513 2044643318 6806 ) utm=132 stm=34 core=1
at com.android.server.power.PowerManagerService$DisplayBlankerImpl.toString(PowerManagerService.java:~3449)
- waiting to lock <0x41a7e420> (a com.android.server.power.PowerManagerService$DisplayBlankerImpl) held by tid=24 (PowerManagerService)
at java.lang.StringBuilder.append(StringBuilder.java:202)
at com.android.server.power.PowerManagerService.mp(PowerManagerService.java:3052)
at android.os.Binder.mp(Binder.java:264)
at android.os.Binder.onTransact(Binder.java:236)
at android.os.IPowerManager$Stub.onTransact(IPowerManager.java:373)
at android.os.Binder.execTransact(Binder.java:351)
at dalvik.system.NativeStart.run(Native Method)

"android.server.ServerThread" prio=5 tid=12 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x41a76178 self=0x507837a8
| sysTid=545 nice=-2 sched=0/0 cgrp=apps handle=1349936616
| state=S schedstat=( 15368096286 21707846934 69485 ) utm=1226 stm=310 core=0
at com.android.server.power.PowerManagerService.isScreenOnInternal(PowerManagerService.java:~2529)
- waiting to lock <0x41a7e2e8> (a java.lang.Object) held by tid=85 (Binder_B)
at com.android.server.power.PowerManagerService.isScreenOn(PowerManagerService.java:2522)
at com.android.server.wm.WindowManagerService.(WindowManagerService.java:7749)
at com.android.server.wm.WindowManagerService.setEventDispatching(WindowManagerService.java:7628)
at com.android.server.am.ActivityManagerService.updateEventDispatchingLocked(ActivityManagerService.java:8083)
at com.android.server.am.ActivityManagerService.wakingUp(ActivityManagerService.java:8077)
at com.android.server.power.Notifier.sendWakeUpBroadcast(Notifier.java:474)
at com.android.server.power.Notifier.sendNextBroadcast(Notifier.java:455)
at com.android.server.power.Notifier.access$700(Notifier.java:62)
at com.android.server.power.Notifier$NotifierHandler.handleMessage(Notifier.java:600)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at com.android.server.ServerThread.run(SystemServer.java:1328)

從trace文件看,是因為TID為24的線程等待一個TID為12的線程持有的鎖,TID為12的線程等待一個TID為85的線程持有的鎖,而TID為85的線程確等待一個TID為24的線程持有的鎖,導致了循環等待的現象,對應的trace文件的語句如下:
TID 24:- waiting to lock <0x41a874a0> (a com.android.server.am.ActivityManagerService) held by tid=12 (android.server.ServerThread)

TID 12: - waiting to lock <0x41a7e2e8> (a java.lang.Object) held by tid=85 (Binder_B)
TID 85:- waiting to lock <0x41a7e420> (a com.android.server.power.PowerManagerService$DisplayBlankerImpl) held by tid=24 (PowerManagerService)

⑥ android的Progressbar怎麼用

在Android中系統提供了多種Progressbar供開發者使用,開發者可以根據下面這個方法使用Progressbar控制項(系統是windows7,開發工具為Android studio)。

1、首先使用Android studio打開一個項目,如下圖:

⑦ 安卓開發 手機號碼攔截

目前中國市場,騷擾電話大量的充斥手機用戶的生活,因此手機安全軟體的電話攔截功能受到廣泛關注和使用。但第三方應用級電話攔截功能的效果並不理想,比如攔截電話時已經響了一聲、或出現短暫的來電界面,多款安全軟體同時存在時可能發生沖突等,其本質原因是目前的第三方應用無法及時的、快速的判斷出來電事件,攔截不及時造成的。現在@安卓安全小分隊就分析其中的原理,並給出我們自己的解決方案。

一、原理分析

1、Android來電流程

上圖中間框圖中給出的是Android系統來電流程。方框的上部分(包括藍色方框)是App層,下部分(粉色方框)為framework層。當有incoming call發生時,RIL層會將incoming call事件向上報給CallTracker。在CallTracker中,incoming call事件將會通過兩條路向上層走。
i)上圖方框中黃色箭頭所示路線。通過PhoneNotifier->TelephonyRegistry將PHONE_STATE_CHANGED通知上去。第三方應用通過SDKAPI注冊listener(PhoneStateListener),監聽framework層TelephonyRegistry發出的PHONE_STATE_CHANGED通知。若call state從CALL_STATE_IDLE變成CALL_STATE_RINGING,則說明有電話打入,且打入的電話號碼會包含在廣播出來的intent中。
第三方安全軟體的攔截功能就是通過這一原理檢測到有來電以及該來電的號碼(其攔截點為圖中灰色方框所示)。若號碼為黑名單號碼,則將來電hangup。
ii)上圖方框中紅色箭頭所示路線。通過PhoneBase->CallManager->CallNotifier->InCallScreen,即從framework->PhoneApp,將NewRingingConnection通知上去。

2、第三方應用級方案缺點
i)黑名單打入電話時,可能會有來電界面。
這是由於第三方應用只能通過左邊黃色流程的PHONE_STATE_CHANGED來判斷是否有來電並攔截,其攔截點比較晚,可能會出現右邊紅色路線已經走到InCallScreen,即來電界面已出現,左邊的第三方應用才將電話hangup,用戶體驗不好。
ii)手機上同時存在多款安全軟體時可能存在沖突。
若各個安全軟體的黑名單各不相同時,若一個號碼N是安全軟體A的黑名單,但不是安全軟體B的黑名單。由於攔截時機晚,當號碼N打入時,B也會檢測到有來電且無需攔截,就有可能做一系列的操作而導致此時N有可能會被接通。因此,多款安全軟體的情況下,不能杜絕每個黑名單中的號碼一定會被攔截掉。

二、優化和改進
針對第三方應用級方案攔截優先順序低、時間延遲嚴重的情況,我們可以從系統入手,通過在底層攔截來提前攔截時間、提高攔截優先順序,使用戶根本無法感知攔截過程,在手機屏幕上不會有任何變化。
我們從底層對兩條路線都做「攔截」(如上圖左右兩個綠色方框所示):
1、針對上圖右邊紅色箭頭所示流程,在底層PhoneBase中進行hook,每當有來電發生時,通知到我們自己的service(如上圖右邊綠色service方框所示),PhoneBase根據service的返回結果進行處理。具體如下:
1.1)在framework中添加一個service(上圖右邊綠色Service綠色方框所示),並授予它root許可權。該service起來之後,等待client端的請求。並對client端暴露了一套SDK API介面(上圖右邊SecuritySDK API綠色方框所示):
介面:ITelephonyListener
booleanonIncomingCall(String phoneNumber, int simId);// callback
(ITelephonyListener listener, int events)//注冊監聽器
1.2) app實現並注冊電話監聽器,當來電發生時,PhoneBase通知監聽器,監聽器返回是否需要攔截,PhoneBase根據返回值處理。
2、針對上圖左邊黃色所示流程,在PhoneNotifier中進行攔截,當有黑名單來電發生時根據一定的規則,阻止phone state向上通知。
根據以上分析可知,我們的攔截在incomingcall流程的底層「靜默」進行攔截,時機早,優先順序高,上層用戶無法感知攔截過程。並且若手機上有多個安全軟體同時存在時,我們的攔截可以杜絕其他安全軟體檢測到來電,防止了手機上多個安全軟體的沖突問題。


⑧ android 怎麼直接啟用電話來電了,如別人沒給我打電話,我怎麼直接啟用接聽,就是讓CallNotifier直接啟用

設置,自動接聽。

⑨ 安卓手機自帶的系統應用哪些可以刪除,都是字母不了解是幹嘛的,竟然有100多個,已經ROOT了

額,建議你網路下「你的機型 精簡列表」
然後特表需要注意的是,系統級別的app不能刪除,例如撥號設置簡訊等。刪除主要的依據是看圖標。你根據圖標識別下都是什麼軟體,例如那些內置推廣軟體都是可以刪掉的,什麼商城,聯通移動的軟體都是可以刪除的。還有的方法就是,一般國內的廠商的系統都做了odex優化,就是把一個apk拆成了兩個,所以在****.apk 下還會有個 *****.odex。但是後來加入的內置軟體就不會有。所以你可以刪除那些沒有odex的軟體。
下面是網上收集的apk精簡列表,建議看看了解就是,不懂的別亂刪。刪壞了麻煩。
AccountAndSyncSettings.apk 帳戶與同步設置 可刪
AppInstaller.apk 程序安裝 建議保留
Applicati**Provider.apk 應用程序支持 不可刪
Bluetooth.apk 藍牙 可替代
BluetoothDun.apk 藍牙撥號 可替代
AlarmClock.apk 原生鬧鍾 建議保留,這個挺好的
Calendar.apk 日歷 可刪
CalendarProvider.apk 日歷存儲 可刪
Camera.apk 原生相機 建議保留
Contacts.apk 聯系人 建議保留
ContactsSync.apk 通訊錄同步 建議保留
Dialer.apk 撥號器 可替代,可以用智能撥號等替代
Email.apk 電子郵件 可刪
EmailEngine.apk 電子郵件引擎 可刪
Home.apk 主屏幕 不要Blur一定要刪
BlurPhone.apk 原生撥號 不可刪
Browser.apk 瀏覽器 可替代
Calculator.apk 計算器 可替代
CalendarSync.apk 日歷同步 可刪
CarDock.apk 車載底座 可刪
CertificateManager.apk 證書管理 建議保留
CertificateProvider.apk 證書供應商 建議保留
35 CertInstaller.apk 證書安裝服務 建議保留
36 ClientUpgradeService.apk 客戶升級服務 可刪
37 B ClockWidget.apk 日期時間部件 可刪
38 B CMP.apk 連接音樂播放器 可刪
39 B CMP_AmazonUK_InternalFM_1.0.179.apk 網路電台 可刪
40 CompassCalibrate.apk 指南針校準 建議保留
41 ContactsData.apk 通訊錄數據 不可刪
42 ContactsProvider2_0.apk 通訊錄存儲 不可刪
43 ContactsUnconnected.apk 未知聯系人 建議保留
44 B Conversati**.apk 文本信息 建議保留
45 Da**anagerApp.apk 數據管理器 不可刪
46 Da**anagerService.apk 數據管理服務 不可刪
47 DefaultContainerService.apk 默認容器服務 不可刪
48 DLNA.apk DLNA媒體 可刪
49 DlnaSystemService.apk DLNA媒體共享服務 可刪
50 DMService.apk 設備管理服務 不可刪
51 Dock.apk 桌面主屏幕 可刪
52 DownloadProvider.apk 下載管理器 不可刪
53 B DrmProvider.apk 數字版權 建議保留
54 esmusica.apk 建議保留
55 esmusica_2_0_0012_embed_Signed_2010-04-13_11-05-17.apk 建議保留
56 FileManager.apk 文件 可刪
57 FileManagerH.apk OI文件管理器 可刪
58 FirewallService.apk 防火牆 建議保留
59 FMRadioService.apk FM服務 建議保留
60 Fota.apk 在線軟體升級 可刪
61 B FriendFeed.apk 社交網路部件 可刪
62 GenieWidget.apk 資訊與天氣 可刪
63 Gfw**er.apk 谷歌服務連接助手 可刪
64 GlobalUnplug.apk 全局拔除 建議保留
65 Gmail.apk Gmail 建議保留
66 GoogleBackupTransport.apk 建議保留
67 GoogleCalendarSyncAdapter.apk 建議保留
68 GoogleContactsSyncAdapter.apk 谷歌聯系人同步適配器 建議保留
69 GoogleFeedback.apk 建議保留
70 GooglePartnerSetup.apk 谷歌合作夥伴設置 建議保留
71 GoogleQuickSearchBox.apk 建議保留
72 GoogleServicesFramework.apk 谷歌服務框架 建議保留
73 GOTV_Altitude.apk 建議保留
74 HiApkMarket.apk 安卓市場 可刪
75 HiapkSettings.apk 安卓相關 可刪
76 B hiphopofficial.apk 建議保留
77 B hiphopofficial_2_0_0012_embed_Signed_2010-04-13_11-08-31.apk 建議保留
78 HomeKey.apk 快捷任務 建議保留
79 HomeSyncWizard.apk 媒體共享 可刪
80 HTMLViewer.apk 不可刪
81 IndexingService.apk 不可刪
82 InPocketService.apk 放入口袋檢測 建議保留
83 KPT.apk 柯達晶彩 可刪
84 Latin.apk MOTO英文輸入法 可替代
85 LiveWall**s.apk 動態壁紙 可保留
86 LiveWall**sPicker.apk 動態壁紙選擇 可保留
87 LMIRescue.apk 建議保留
88 LMIRescueSecurity.apk 建議保留
89 LocationProxyDmPlugin.apk 網路位置 建議保留
90 MagicSmokeWall**s.apk 魔幻煙霧動態壁紙 可刪
91 Maps.apk 地圖 可刪
92 MarketAccess.apk 電子市場區域 建議保留
93 MarketUpdater.apk 電子市場軟體更新 建議保留
94 B MasterClearErrorReport.apk 清除錯誤報告 可刪
95 MEAD.apk 測試模式 不可刪
96 MediaGallery.apk 媒體庫 建議保留
97 MediaProvider.apk 媒體播放 不可刪,鈴音相關
98 MediaSync.apk 媒體同步 可刪
99 MediaUploader.apk 我上傳的內容 可刪
100 B MessagesWidget.apk 信息部件 可替代
101 B Messaging.apk 信息 可替代
102 MotHstcmd.apk 建議保留
103 MotoAtCmdEpuPlugin.apk MOTO AT命令擴展 建議保留
104 MotoAtCmdPlugin.apk MOTO AT命令… 建議保留
105 MotoAttAtCmdPlugin.apk MOTO AT命令… 建議保留
106 MotoImeTutorial.apk MOTO輸入法教程 可刪
107 MotoPhonePortal.apk MOTO手機門戶 建議保留
108 MotorolaSettingsProvider.apk 設置存儲 不可刪
109 MotoSmartHandWriting.apk MOTO手寫輸入 可替代
110 M**changeService.apk 微軟ECHANGE服務 可刪
111 MtlrNotifier.apk MTLR媒體通知 可刪
112 Mynet.apk 3G熱點 可刪
113 NetworkLocation.apk 網路位置 建議保留
114 NewsWidget.apk 新聞部件 可刪
115 oma1motService.apk OMA模塊 建議保留
116 OMADownload.apk OMA通訊服務下載 建議保留
117 OMAProvisioning.apk OMA服務配置 建議保留
118 OverlaySettingsProvider.apk 多重設置 不可刪
119 PackageInstaller.apk A打包安裝服務 不可刪
120 PandaHome2.0_V1.7.1_hiapk.apk 熊貓桌面 可刪
121 PerformanceManager.apk 任務管理器 可替代
122 PhoneAdd**.apk 撥號插件 不可刪
123 PhoneConfig.apk 撥號配置 不可刪
124 PhotoWidget.apk 相框部件 可刪
125 PicoTts.apk 語音合成引擎 建議保留
126 Pinyin.apk MOTO拼音輸入 可替代
127 PolicyMgrProvider.apk 谷歌搜索 可刪
128 PolicyMgrService.apk 谷歌搜索服務 可刪
129 Protips.apk 安卓小部件主屏提示 可刪
130 B QuickContactWidget.apk 聯系人快速任務 可刪
131 B Quickoffice.apk 辦公軟體 可刪
132 QuickSms.apk 快捷信息 可刪
133 B revolver.apk 建議保留
134 B revolver_2_0_0012_embed_Signed_2010-04-13_11-07-08.apk 建議保留
135 RichTextCommon.apk 剪貼版 建議保留
136 ScreenReader.apk 殘疾人輔助 可刪
137 Settings.apk 設置 不可刪
138 Setup.apk 帳戶 不可刪
139 SetupProvider.apk 帳戶存儲 不可刪
140 SetupWizard.apk 開機設置向導 可刪
141 SimContactAdapter.apk SIM卡聯系人配置 可刪
142 SimManager.apk SIM卡管理器 可刪
143 B SocialMessaging.apk 新鮮事 可刪
144 B SocialShare.apk 新鮮事共享 可刪
145 SoundRecorder.apk 錄音 建議保留
146 SpellingCheckService.apk 拼寫檢查 可刪
147 StartController.apk 連接控制器 不可刪
148 B StatusWidget.apk 社交狀態部件 可刪
149 B StickyNoteWidget.apk 便簽部件 建議保留
150 B Stk.apk STK管理器 可刪
151 StorageMonitorService.apk 存儲檢測設置 不可刪
152 Street.apk 街景 可刪
153 Superuser.apk 授權管理 不可刪
154 Switcher.apk MOTO輸入法開關 可替代
155 SyncMLTmo.apk 不可刪
156 SystemUpdater.apk 系統更新 建議保留
157 Talk.apk GoogleTalk 建議保留
158 Tasks.apk 任務 可刪
159 TelephonyProvider.apk 電話管理器 不可刪
160 B Term.apk 超級終端 可替代
161 B ToggleWidgets.apk 控制部件 建議保留
apk 語音文字轉換 建議保留
165 UniversalInbox.apk 通用收件箱 建議保留
166 Upgrader.apk 升級工具 建議保留
167 Usb.apk USB連接管理 不可刪
168 UserDictionaryProvider.apk 用戶字典 建議保留
169 Vending.apk 電子市場 建議保留
170 VideoPlayer.apk 視頻播放器 可替代
171 Visualization.apk 可視化特效 可刪
172 VisualizationWall**s.apk 音樂壁紙 可刪
173 VoiceSearch.apk 語音搜索 建議保留
174 ***Client.apk ***虛擬網 可刪
175 ***Services.apk ***虛擬網服務 建議保留
176 WapPushSI.apk 瀏覽器信息 可刪
177 B WeatherWidget.apk 天氣部件 可刪
178 B WmdrmDla.apk 媒體數字許可權 可刪
179 B WmdrmWebpush.apk 媒體服務支持 可刪
184 ZoomService.apk 縮放服務 可刪

⑩ 如何判斷一個Android設備具有打開附件模式

我用"SuperOneClickv2.2-ShortFuse" ROOT成功。 特別強調:root誠可貴,系統價更高!獲得最高許可權後,無限意淫可以,刪軟體要慎重! 下面是我參考的教程。。。。 引用—————————————————————————————— ——————————————————————————————引用 應該是機鋒首發的哈! 三星 I8150的Root辦法很簡單哈,使用SuperOneClick就OK了,各位老鳥可直接繞行。 首先,手機設置裡面開啟USB調試,方法:桌面--選項--設置--應用程序--開發--勾選「USB調試」。這一步驟需要在手機未與電腦連線的狀態下設置哈。 然後,確認電腦上已經安裝過三星的手機驅動程序,論壇里有,也找得到哈(有機油說不安裝也可以root成功的,但是建議安裝一下驅動哈) 最後,把手機開機後,連接到電腦,首先將電腦上的各種防火牆各種殺毒軟體關閉,然後在電腦上解壓附件中的rar文件,然後運行解壓出來的SuperOneClick.exe,點擊root按鈕,然後等待幾分鍾程序運行結束後(我記得最後一步運行成功後會彈出提示框詢問是否將成果donate,選是或者否都不影響root的哈),重啟手機,就OK了!大家就可以看到,功能表列表中SuperUser(授權管理)出現了! 有機油反應殺毒軟體提示有病毒的問題,這是因為電腦上的root破解程序使用的溢出演算法,都會被殺毒軟體檢測為木馬。直接無視之,關掉殺毒軟體即可! 經過多次測試,均完美root哈!步驟非常簡單,就不上截圖了,各位機油自己整吧! ________________________________________ 手機成功ROOT之後,要先在手機上安裝一個RE文件管理器,即Root Explorer,見附件。 安裝成功後,打開RE,這時候Super User(授權管理)會提示RE需要獲取最高許可權,點擊「允許」。進入RE瀏覽器,首先要確認在最上方,將RE掛載為R/W Mode(讀寫模式),而不是默認的只讀模式。 在RE根目錄中顯示的文件夾中有兩個主要文件夾:一個是『sdcard』,即內存卡,該目錄裡面有一個文件夾名為『external_sd』,對應的即為手機外置擴展的SD卡。RE根目錄下的另一個文件夾,『system』文件夾,即為系統文件夾,系統自帶程序,系統美化,界面DIY,系統優化等等對應的文件和操作都在這個文件夾里。 OK,下面簡單介紹一下system文件夾下的幾個主要文件夾: app:系統自帶的各種程序,包括安卓系統的基本固件程序和系統ROM里自帶的程序 Fonts:系統里支持的字體。關於字體的更改其實主要就是將下載的字體文件放到這裡面並修改相應許可權 Framework: 這裡面的各種文件關繫到系統的UI,比如鎖屏,比如下拉狀態欄,比如撥號鍵盤界面,等等,難以盡述。關於系統的界面優化美化其實主要就是修改這個文件夾裡面的framework等文件。 media:裡面是系統自帶的媒體文件,notifications,alarms,ringtones就是系統自帶的通知鈴聲和來電鈴聲,如果要釋放系統空間,可將這三個文件夾剪切至SD卡的任意位置,均不影響系統鈴聲的使用。 好,下面進入正題,講一下如何刪除system/app中的系統自帶程序: 首先要說的是,不建議各位機油將程序直接刪除,建議在sdcard中新建一個備份文件夾,將要刪除的程序移動至該文件夾。這樣一旦刪除有誤或者哪天想要用系統的自帶程序了,將其用RE再移動回app文件夾即可。 其次要說的是,對於app中有的程序,只有一個apk文件包。但有的程序,不僅有一個程序apk文件,還有一個同名的odex文件,要刪除該程序,需要將這兩個文件全部從app文件夾中移除,否則就可能會出現系統報錯。另外,對於有的程序,還有其widget文件的apk文件(即桌面小掛件),如要刪除該程序,需要將app文件夾中對應的widget的apk文件也一並移除,否則也會出現系統報錯,打個比方,要刪除一個名為samsung的程序,可能要移除三個或四個文件:samsung.apk,samsung.odex以及samsungwidget.apk以及samsungwidget.odex。 下面說一下如何找到程序對應的apk文件:其實有兩個最基本的辦法,第一,就是根據程序的英文名稱自己判斷;第二,也是最直觀的辦法,就是在app文件夾中,該apk文件的圖標通常與功能表中的程序圖標是一模一樣的或者幾乎一樣的。 特別提示: 1.系統自帶的基本功能固件對應的apk文件千萬不要刪除,比如bluetooth,phone,message,clock,wifi等等,否則可能就要重新刷機了。。 2.要刪除系統自帶的一些程序以使用第三方程序替代,強烈建議先安裝好第三方程序,然後再刪除app文件夾中的系統自帶程序,以免系統報錯崩潰。例如,要刪除系統自帶的三星輸入法,強烈建議先安裝一個第三方輸入法,比如搜狗手機輸入法,然後再在app文件夾中刪除三星輸入法所對應的相關apk文件及odex文件等。 3.三星I8150自帶了幾個什麼影視圈閱讀圈社交圈的,其實就是給整合了幾個同類軟體,要刪除這幾個程序的話需要將他整合的程序也在app文件夾中找到並移除。例如,刪除閱讀圈這個程序,不僅僅要刪除app文件夾中的閱讀圈那個圖標對應的apk文件等等,還要刪除其整合的ireader,蜜蜂新聞所對應的apk文件等,否則就可能系統報錯。 4.最後,再次建議各位機油採取將要刪除的程序文件剪切至sd卡的備份文件夾中,而不要直接刪除。。。。 再給大家友情推薦一款任務管理器---Advanced Task Manager(高級任務管理器),一鍵關閉正在運行的進程,可以設置例外程序,可以添加桌面快捷按鈕,一鍵關進程,個人認為是安卓平台最給力的任務管理類軟體。 然後,關於手機用的殺毒軟體,強烈推薦LBE安全大師,機油們可以直接網路,有官方網站的,附件中是最新版的,11月20號更新的。相比之下,360手機衛士麻花藤手機安全管家神馬的實在是太垃圾了。。。我就不吐槽了。。。 OK,大家可以好好享受手機輕裝上陣的感覺了,我的I8150其實是給我老婆買的,入手之後我便給他優化掉了100多M得系統空間,默認情況下在ATM中後台運行的程序只有7個,哇咔咔。手機在老婆手裡,就不上傳截圖了哈~~~ ___________________________________________ i8150 root後 該保留的程序。 AccountAndSyncSettings.apk 可刪 谷歌賬戶同步設置,需要同步谷歌帳戶的朋友請不要刪除服務,谷歌服務之一,無圖標,無組件 AccuWeatherDaemonService.apk 可刪 天氣插件,與系統自帶的動態天氣壁紙有關服務,無圖標,無組件 AlertRecipients.apk 可刪 未知,就名字來看應該是發出簡訊後,收件人收到簡訊後,我們得到的回執服務,無圖標,無組件 AmsComposer.apk 可刪 動感簡訊,移動的一項業務可打10086咨詢程序,有圖標,無組件 **ogClock.apk 可刪 桌面時鍾插件,有多種鍾表樣式,需要的勿刪插件,無圖標,有組件 AndroidQQ_Samsung_Seine.apk 可刪 QQ,原廠自帶的 QQAlipayGphone.apk 可刪 支 付寶,原廠自帶的支 付寶程序 ApplicationsProvider.apk 保留 應用程序支持服務系統服務,無圖標,無組件,切記不要刪除 --------------------B-------------------- BadgeProvider.apk 保留 標志提供者,刪除後簡訊等崩潰系統服務,無圖標,無組件,切記不要刪除 BluetoothAvrcp.apk 可刪 藍牙設備遙控,注意這個程序刪除後會出現FC,重起後就好了。據反饋說刪除後會造成使用車載藍牙死機,請自行測試。服務,無圖標,無組件 BluetoothOPP.apk 保留 藍牙相關程序服務,無圖標,無組件 BluetoothPbap.apk 保留 藍牙相關程序服務,無圖標,無組件 BluetoothTestMode.apk 可刪 藍牙測試模式服務,無圖標,無組件 BrcmBluetoothService.apk 保留 藍牙相關程序服務,無圖標,無組件 Browser.apk 代替 自帶瀏覽器,三星對自家的瀏覽器優化的還是不錯的,WIFI和3G情況下個人感覺比海豚好用,可以用UC等代替,建議備用程序,有圖標,有組件 BuddiesNow.apk 可刪 好友現況窗口小插件,這個東西未測試,大家可以試試插件,無圖標,有組件 --------------------C-------------------- CalendarProvider.apk 代替 谷歌日歷儲存器,刪除了它機器自帶的日歷就不能用了,也可以用365日歷+等代替服務,無圖標,無組件 CallSetting.apk 保留 電話設置服務,無圖標,無組件 Camera.apk 代替 照相機,可滿足大家的日常需要,也可用其他照相軟體代替程序,有圖標,無組件 CertInstaller.apk 保留 證書安裝工具,具體也不知道是做什麼用的,所以建議保留服務,無圖標,無組件 ClockPackage.apk 代替 時鍾,鬧鍾,三星自帶的鬧鍾有響前提醒使用很棒,起床時可用「起床」聲音輕輕的喚醒你,大家可以試試,不推薦刪除,也可用正點鬧鍾等代替。程序,有圖標,無組件 Contacts.apk 代替 聯系人,可用其他聯系人軟體代替程序,有圖標,無組件 ContactsProvider.apk 保留 聯系人存儲器服務,無圖標,無組件 cooldict.apk 代替 詞酷,原廠自帶的英漢詞典,基本能滿足需要,建議用雲詞、有道詞典代替程序,有圖標,無組件 CSC.apk 保留 管理CSC的工具,這個建議保留,服務,無圖標,無組件 --------------------D-------------------- DataCreate.apk 可刪 刪除後系統跳到開機的「S閃」然後就進桌面了服務,無圖標,無組件 Days.apk 可刪 迷你日記插件插件,無程序,有組件 DefaultContainerService.apk 保留 媒體容器服務服務,無圖標,無組件 DigitalClock.apk 可刪 桌面數字時鍾插件,無圖標,有組件 Divx.apk 可刪 視頻解碼器,刪除後未發現視頻無法播放服務,無圖標,無組件 Dlna.apk 可刪 多媒體無線分享,可以通過WIFI來實現用手機來播放電腦里共享的視頻程序,有圖標,無組件 DownloadProvider.apk 代替 谷歌瀏覽器下載管理,如果更換瀏覽器的話可以刪除服務,無圖標,無組件 DownloadProviderUI.apk 代替 谷歌瀏覽器下載管理UI,如果更換瀏覽器的話可以刪除服務,無圖標,無組件 DrmProvider.apk 可刪 版權管理服務,無圖標,無組件 DrmUA.apk 可刪 數字版權管理服務,無圖標,無組件 DualClock.apk 可刪 桌面雙時鍾插件,經常出國的朋友可以用到,刪除 ClockPackage.apk的話可能造成無法使用插件,無圖標,有組件。 --------------------E-------------------- Email.apk 代替 電子郵件,喜歡收郵件的朋友不要刪除程序,有圖標,無組件 EmailWidget.apk 可刪 電子郵件的桌面插件插件,無圖標,有組件 Encrypt.apk 可刪 加密的東西,還沒發現是干什麼用的服務,無圖標,無組件 factoryTest.apk 可刪 系統復位功能,我們都會WIPE,沒什麼用服務,無圖標,無組件 FMRadio.apk 可刪 FM調頻收音機,必須插上耳機才能使用,信號還行,看個人需要程序,有圖標,無組件 FTC.apk 可刪,建議保留未知服務,無圖標,無組件 FTM.apk 可刪,建議保留WLAN sharing manager服務,無圖標,無組件 FTS.apk 可刪,建議保留WIFI共享,這個根據個人需要來決定是否刪除服務,無圖標,無組件 --------------------G-------------------- Gallery3D.apk 代替 3D相冊,機器自帶的看圖軟體在兔子上灰常好用,速度很快,個人認為沒有必要用快圖,也可用快圖等代替程序,有圖標,有組件 glyder2.apk 可刪未知,不知道是什麼東東 Gmail.apk 可刪 谷歌郵件程序程序,谷歌服務之一,有圖標,無組件 GoogleBackupTransport.apk 可刪 谷歌設置備份,可以把你的設置備份到網上服務,谷歌服務之一,無圖標,無組件 GoogleCalendarSyncAdapter.apk 可刪 谷歌日歷同步配置器,刪除了它就不能同步日歷了服務,谷歌服務之一,無圖標,無組件 GoogleContactsSyncAdapter.apk 可刪 谷歌聯系人同步配置器,刪除了它就不能同步聯系人了服務,谷歌服務之一,無圖標,無組件 GoogleFeedback.apk 可刪 谷歌市場反饋代理程序,不知道是做什麼用的服務,谷歌服務之一,無圖標,無組件 GooglePartnerSetup.apk 可刪 谷歌合作夥伴設置,不知道是做什麼用的服務,谷歌服務之一,無圖標,無組件 GoogleQuickSearchBox.apk 可刪 谷歌搜索,快速搜索程序,谷歌服務之一,有圖標,有組件 GoogleServicesFramework.apk 可刪 谷歌服務框架,刪除了它,你就什麼都不能同步了服務,谷歌服務之一,無圖標,無組件 --------------------H-------------------- HTMLViewer.apk 可刪 本地網頁查看器,貌似是可以把網頁下載到本機看,沒試過服務,無圖標,無組件 --------------------I-------------------- ImgoTV.apk 可刪未知,不知道是什麼東東 InputEventApp.apk 可刪 輸入事件管理器,不知道是什麼東東,刪除它沒發現有什麼影響服務,無圖標,無組件 install_flash_player.apk 可刪 Flash播放器,刪除後無法播放FLASH程序,有圖標,無組件 iReader.apk 可刪 愛讀,看TXT小說的,閱讀圈內置應用,刪了閱讀圈就無法使用,版本太老,建議另行安裝程序,有圖標,無組件 --------------------J-------------------- JobManager.apk 代替 系統自帶任務管理器,可用其它代替程序,有圖標,無組件 --------------------K-------------------- kaixin001.apk 可刪 原廠自帶開心網客戶端 Kies.apk 可刪 三星套件KIES服務,無圖標,無組件 KiesAir.apk 可刪KIES無線客戶端,可以用WIFI訪問手機程序,有圖標,無組件 kieswifi.apk 可刪 KIES無線連接,刪了它KiesAir.apk就不能用了服務,無圖標,無組件 Kobo.apk 可刪 KOBO閱讀器程序,無圖標,無組件 --------------------L-------------------- lcdtest.apk 可刪 屏幕測試服務,無程序,無組件 liveWallpapers.apk 可刪 動態壁紙,刪除了就沒動態壁紙了服務,無程序,無組件 LiveWallpapersPicker.apk 可刪 動態壁紙選擇器,刪除了就沒動態壁紙了服務,無程序,無組件 LogsProvider.apk 保留 系統日誌支持服務服務,無程序,無組件 --------------------M-------------------- MediaHub.apk 可刪 影視圈程序,有圖標,無組件 Maps.apk 可刪 谷歌地圖,不解釋,大家都知道,不過我用自帶的高德程序,谷歌服務之一,有圖標,有組件 MarketUpdater.apk 可刪 谷歌市場軟體升級服務,谷歌服務之一,無圖標,無組件 MediaProvider.apk 保留 媒體數據存儲,刪除了就不能換鈴聲了服務,無圖標,無組件 MediaUploader.apk 可刪 上傳的內容,不知道是做什麼用的服務,無圖標,無組件 Memo.apk 代替 Memo備忘錄,機器自帶的,能滿足日常需要,可用同類軟體代替程序,有圖標,無組件 Microbesgl.apk 可刪 微生物動態壁紙服務,無圖標,無組件 MiniDiary.apk 可刪 迷你日記,初次使用必須聯網,看個人需要程序,有圖標,無組件 MinimalHome.apk 可刪 未知 Mms.apk 代替 簡訊信息,可用GO簡訊代替程序,有圖標,無組件 MmsProvisioning.apk 可刪 簡訊相關,刪除後不影響服務,無圖標,無組件 MobilePrint.apk 可刪 移動列印,不知道怎麼用服務,無圖標,無組件 MobileTrackerEngineTwo.apk 可刪 手機**,實用性有待考驗(我想沒人願意試驗)服務,無圖標,無組件 MobileTrackerUI.apk 可刪 手機**界面服務,無圖標,無組件 mreader.apk 可刪 貌似是閱讀器 MtpApplication.apk 可刪 三星KIES後台服務服務,無圖標,無組件 MusicPlayer.apk 代替 音樂播放器,可用其它軟體代替程序,有圖標,有組件 MyFiles.apk 保留 MyFile文件管理,如果不是從系統設置里更換鈴聲必須要用到,我肯定刪除程序,有圖標,無組件 --------------------N-------------------- Navigator.apk 可刪 自帶 高 德 導航,不喜歡程序,有圖標,無組件 NetworkLocation.apk 可刪 網路位置,可以加快GPS搜星速度服務,無圖標,無組件 --------------------P-------------------- PackageInstaller.apk 保留 打包安裝程序服務,無圖標,無組件 PanningTryActually.apk 可刪未知 PCWClientS.apk 可刪未知,注意刪除後會出現FC,重起後就好了服務,無圖標,無組件 Personalization.apk 可刪 個人設置服務,無圖標,無組件 Phone.apk 保留 撥號器,刪除了它你就別打電話了程序,有圖標,無組件 Phone_Util.apk 可刪 電話設備服務,無圖標,無組件 PhoneCrashNotifier.apk 可刪未知 PhoneErrService.apk 可刪 電話錯誤服務服務,無圖標,無組件 PhotoRetouching.apk 可刪 圖片編輯,看個人需要程序,有圖標,無組件 PicoTts.apk 可刪 用不到語音朗讀的可刪服務,無圖標,無組件 PopupuiReceiver.apk 可刪 未知 PostIt.apk 可刪 迷你記事插件插件,無圖標,有組件 Preconfig.apk 可刪 預先配置服務,無圖標,無組件 PressReader.apk 可刪 報紙閱讀、天氣程序,有圖標,有組件 Protips.apk 可刪 綠色機器人桌面提示插件,無圖標,有組件 Provision.apk 可刪 未知 PRUI.apk 可刪未知 --------------------Q-------------------- QQBrowser_samsung.apk 可刪 原廠自帶的QQ瀏覽器未知,O大的ROM里沒見過 QuickSearchBox.apk 可刪 系統自帶的搜索程序,有圖標,有組件 QuickView.apk 保留 快速查看,相機拍照後可以快速預覽服務,無圖標,無組件 QYVideoClient.apk 可刪 奇藝影視 ,看網路視頻用的 --------------------R-------------------- ReadersHub.apk 可刪 閱讀圈,裡面集成了看雜志,小說及新聞的軟體,不過版本較老程序,有圖標,無組件 Renren.apk 可刪 人人網 --------------------S-------------------- SamsungApps.apk 可刪 三星市場,三星自家的APP市場程序,有圖標,無組件 SamsungAppsUNAService.apk 可刪 三星市場服務服務,無圖標,無組件 SamsungIM.apk 可刪 三星聊天工具,很強大,可以用多種帳號程序,有圖標,無組件 SamsungIME.apk 可刪 三星原廠輸入法服務,無圖標,無組件 SamsungWidget_ProgramMonitor.apk 可刪 任務管理桌面插件插件,無圖標,有組件 ScreenCaptureService.apk 可刪 三星截圖後台服務,刪除了它就不能截圖了服務,無圖標,無組件 SecDownloadProvider.apk 代替 下載存儲器,使用系統自帶瀏覽器的不要刪除服務,無圖標,無組件 SecretWallpaper1.apk 可刪 動態天氣壁紙,需要AccuWeatherDaemonService.apk支持服務,無圖標,無組件 SecretWallpaper2.apk 可刪 動態天氣壁紙,需要AccuWeatherDaemonService.apk支持服務,無圖標,無組件 SecurityProvider.apk 可刪 安全儲存器服務,無圖標,無組件 selfreg.apk 可刪 未知服務,無圖標,無組件 SelfTestMode.apk 可刪 自檢模式服務,無圖標,無組件 SerialNumberLabelIndicator.apk 可刪未知服務,無圖標,無組件 serviceModeApp.apk 可刪未知服務,無圖標,無組件 Settings.apk 保留 系統設置,你刪刪試試?程序,有圖標,無組件 SettingsProvider.apk 保留 系統設置存儲器服務,無圖標,無組件 SevenEngine.apk 可刪未知服務,無圖標,無組件 ShareApp.apk 可刪 應用共享服務,無圖標,無組件 shutdown.apk 可刪 關機,用不到服務,無圖標,無組件 signin.apk 可刪 三星賬號登陸與三星市場是一套的服務,無圖標,無組件 Sinamicroblog.apk 可刪 SinaNews.apk 可刪 SinaStock.apk 可刪 SinaWeather.apk 可刪 新浪微薄、新聞、股票、天氣插件,無圖標,有組件 SisoDrmProvider.apk 保留 刪除後造成鬧鍾關閉時失去響應服務,無圖標,無組件 SMTEngine.apk 可刪未知服務,無圖標,無組件 SMTSetup.apk 可刪未知服務,無圖標,無組件 SnsAccountKx.apk 可刪 SnsAccountRr.apk 可刪 SnsDisclaimer.apk 可刪 SnsImageCache.apk 可刪 SnsProvider.apk 可刪 社交程序相關,沒什麼用服務,無圖標,無組件 SocialHub.apk 可刪聊天和EMAIL程序用的服務服務,無圖標,無組件 SoundPlayer.apk 代替 音樂播放器,可以用別的軟體代替程序,無圖標,無組件 SpeechRecorder.apk 可刪未知服務,無圖標,無組件 Stk.apk 可刪 S I M 工具包,有 一 卡 多 號 的不要刪除程序,有圖標,無組件 Street.apk 可刪 谷歌街景地圖程序,谷歌服務之一,有圖標,有組件 Superuser.apk 保留 超級用戶,沒了它ROOT也沒用程序,有圖標,無組件 syncmldm.apk 可刪 系統更新後台服務服務,無圖標,無組件 syncmlds.apk 可刪 同步到web伺服器後台服務服務,無圖標,無組件 SystemUI.apk 保留 支持桌面服務,無圖標,無組件 --------------------T-------------------- Talk.apk 可刪 GTalk程序,谷歌服務之一,有圖標,無組件 TasksProvider.apk 可刪 任務存儲 服務,無圖標,無組件 TelephonyProvider.apk 保留 電話記錄器服務,無圖標,無組件 Tencentmicroblog.apk 可刪 騰迅微博 Term.apk 可刪 Terminal Emulator 終端模擬程序服務,無圖標,無組件 thinkdroid.apk 可刪 辦公軟體,原廠自帶的office軟體程序,有圖標,無組件 TomEbook.apk 可刪 TOM雜志,沒用過 Tonghuashun.apk 可刪 同花順,炒股用的 TouchWiz30Launcher.apk 代替三星的桌面程序,可用GO桌面等代替服務,無圖標,無組件 TouchWizCalculator.apk 可刪 計算器,自帶的,夠用了程序,有圖標,無組件 TouchWizCalendar.apk 代替 系統自帶日歷,可用其它軟體代替程序,有圖標,無組件 TrimApp.apk 可刪未知服務,無圖標,無組件 TtsService.apk 可刪 語音朗讀伺服器(用不到語音的刪)服務,無圖標,無組件 TwCalendarAppWidget.apk 可刪 日歷插件插件,無圖標,有組件 TwWallpaperChooser.apk 保留 牆紙庫選擇器(自帶壁紙),刪除了就不能換壁紙了服務,無圖標,無組件 --------------------U-------------------- UserDictionaryProvider.apk 可刪 用戶自定義詞典,沒什麼用服務,無圖標,無組件 --------------------V-------------------- Vending.apk 可刪 谷歌電子市場,可以下載程序程序,谷歌服務之一,有圖標,有組件 VideoEditor.apk 可刪 視頻編輯,可以編輯拍攝的視頻程序,有圖標,無組件 VideoPlayer.apk 代替 視頻播放器,自帶的就夠用,也可用MOBO播放器等代替程序,有圖標,無組件 viva_tts.apk 可刪 VIVA雜志,看雜志用的,閱讀圈程序之一程序,無圖標,無組件 VoiceRecorder.apk 可刪 錄音機,O大的ROM里很好用,建議保留,也可用別的代替程序,有圖標,無組件 VoiceSearch.apk 可刪 語音搜索,實用性不強程序,有圖標,無組件 VoiceDialer.apk 可刪 語音撥號,實用性不強服務,無圖標,無組件 V P NServices.apk 可刪 科學上網服務服務,無圖標,無組件 --------------------W-------------------- wipereceiver.apk 可刪 三星遠程清除手機信息後台服務服務,無圖標,無組件 WlanTest.apk 可刪 WIFI測試工具服務,無圖標,無組件 wssomacp.apk 可刪 未知服務,無圖標,無組件 wssyncmlnps.apk 可刪 未知服務,無圖標,無組件 Youku_Samsung_seine.apk 可刪 優酷視頻,不用解釋

閱讀全文

與androidnotifier相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163