adb logcat | grep ActivityManager
java
在Android工程中, 建立xxxx.aidl文件,編譯後,會生成一個xxxx.java文件,這個文件裏生成Stub抽象類繼承android.os.Binder、實現aidl中聲明的方法。而後工程裏建立一個service類android
進入到一個Activity onCreate -> onStart -> onResume App進入後臺 onPause -> onStop 關閉Activity onPause -> onStop -> onDestroy App頁面跳轉 onPause -> onStop 重回Activity onRestart -> onStart -> onResume 總結就是: 界面出現 -> onStart, 界面消失 -> onStop 界面建立 -> onCreate, 界面摧毀 -> onDestroy
在工程的AndroidManifest.xml
的application
中定義android:name
屬性,到具體的類,App啓動時就首先加載這個類。而後再加載在AndroidManifest.xml
中定義爲android.intent.category.LAUNCHER
的類shell
須要過濾的filtAction寫在AndroidManifest.xml裏
好比:app
<receiver android:name=".MyBroadcastReceiver" android:exported="false" > <!--intent過濾器,指定能夠匹配哪些intent, 通常須要定義action 能夠是自定義的也但是系統的--> <intent-filter> <action android:name="com.app.broadcast"/> </intent-filter> </receiver>
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver(); IntentFilter fileter = new IntentFilter(); fileter.addAction("com.app.broadcast"); MainActivity.this.registerReceiver(myReceiver, fileter);
Intent intent = new Intent(""); this.sendBroadcast(intent);
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
應用啓動時,Android FrameWork建立一個Looper對象,處理MessageQueue裏的Message
建立一個Hander後,MessageQueue對象會持有這個Handler的引用
Looper處理Handler時,就觸發Handler的handleMessage(Message)方法ide
內部匿名類和內部非靜態類會有一個對外部類的隱式引用oop
若是Handler長時間不執行,當前類的內存不會被釋放post
public class SampleActivity extends Activity { /** * Instances of static inner classes do not hold an implicit * reference to their outer class. */ private static class MyHandler extends Handler { private final WeakReference<SampleActivity> mActivity; public MyHandler(SampleActivity activity) { mActivity = new WeakReference<SampleActivity>(activity); } @Override public void handleMessage(Message msg) { SampleActivity activity = mActivity.get(); if (activity != null) { // ... } } } private final MyHandler mHandler = new MyHandler(this); /** * Instances of anonymous classes do not hold an implicit * reference to their outer class when they are "static". */ private static final Runnable sRunnable = new Runnable() { @Override public void run() { /* ... */ } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Post a message and delay its execution for 10 minutes. mHandler.postDelayed(sRunnable, 1000 * 60 * 10); // Go back to the previous Activity. finish(); } }