一、photoup开源项目的阅读
https://github.com/chrisbanes/photup
1.看项目的时候我喜欢先看用到了那些库文件
- Android-BitmapMemoryCache-v1.0.jar https://github.com/chrisbanes/Android-BitmapCache
- crittercism_v3_0_11_sdkonly.jar
- crouton-1.8.1.jar https://github.com/keyboardsurfer/Crouton
- CWAC-MergeAdapter.jar https://github.com/commonsguy/cwac-merge
- CWAC-SackOfViewsAdapter.jar https://github.com/commonsguy/cwac-sacklist
- eventbus-2.0.2.jar https://github.com/greenrobot/EventBus
- FacebookSDK-chrisbanes.jar https://github.com/chrisbanes/facebook-android-sdk
- nineoldandroids-2.4.0.jar
- ormlite-android-4.45.jar
- ormlite-core-4.45.jar http://ormlite.com/
- PhotoView-1.2.1.jar https://github.com/chrisbanes/PhotoView
- SwipeDismissNOA-chrisbanes.jar https://github.com/chrisbanes/SwipeToDismissNOA
- LightBoxPhotoProcessing https://github.com/chrisbanes/PhotoProcessing
- lib-actionbarsherlock https://github.com/JakeWharton/ActionBarSherlock
2.Service
// 2.0 API level之后,onStart()方法被onStartCommand()取代了
onStartComand使用时,返回的是一个(int)整形。
这个整形可以有四个返回值:start_sticky、start_no_sticky、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY。
它们的含义分别是:
1):START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
2):START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务
3):START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
4):START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。
onStartComand参数flags含义
flags表示启动服务的方式:
Additional data about this start request. Currently either 0, START_FLAG_REDELIVERY, or START_FLAG_RETRY.
START_FLAG_REDELIVERY:如果你实现onStartCommand()来安排异步工作或者在另一个线程中工作, 那么你可能需要使用START_FLAG_REDELIVERY来让系统重新发送一个intent。这样如果你的服务在处理它的时候被Kill掉, Intent不会丢失.
START_FLAG_RETRY:表示服务之前被设为START_STICKY,则会被传入这个标记。
二、判断是否锁屏
public final static boolean isScreenLocked(Context c) {//为FALSE的时候就是锁着的
android.app.KeyguardManager mKeyguardManager = ( android.app.KeyguardManager) c.getSystemService(c.KEYGUARD_SERVICE);
return !mKeyguardManager.inKeyguardRestrictedInputMode();
}
三、反射机制的使用
Class c = student.getClass();
Method m = c.getMethod("getName", null);
String name = (String) m.invoke(student, null);