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(); } }