一、Gallery应用
1、启动acitity(com.cooliris/media/Gallery.java)
///AndroidManifes.xml//
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="com.cooliris.media.Gallery" android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="keyboardHidden|orientation"
android:clearTaskOnLaunch="true" android:noHistory="false"
android:stateNotNeeded="true">
.................................................
2、isViewIntent()判断action("android.intent.action.MAIN")是不是视图"android.intent.action.VIEW",结果为否,跳过
3、if (isViewIntent() && getInt....也跳过
4、创建RenderView视图
5、sendInitialMessage()向本actitity发送消息
6、第66行接收消息,(private final Handler handler = new Handler() {.......),执行checkStorage
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case CHECK_STORAGE:
checkStorage();
break;
case HANDLE_INTENT:
initializeDataSource();
break;
}
}
};
7、checkStorage中mImageManagerHasStorageAfterDelay返回true,则直接跳到handler.sendEmptyMessage(HANDLE_INTENT);
private void checkStorage() {
mNumRetries++;
mImageManagerHasStorageAfterDelay = ImageManager.hasStorage();
if (!mImageManagerHasStorageAfterDelay && mNumRetries < NUM_STORAGE_CHECKS) {
if (mNumRetries == 1) {
int res;
if (Environment.isExternalStorageRemovable()) {
res = Res.string.no_sd_card;
} else {
res = Res.string.no_usb_storage;
}
mApp.showToast(getResources().getString(res), Toast.LENGTH_LONG);
}
handler.sendEmptyMessageDelayed(CHECK_STORAGE, 200);
} else {
handler.sendEmptyMessage(HANDLE_INTENT);
}
}
8、第66行接收消息,(private final Handler handler = new Handler() {.......),执行initializeDataSource提取所有数据