1. Activity的attach method
    这个method里初始化了很多东西,却看不见Activity的什么地方call了它?
    answer:因为attach前面无modifier,所以是个public method,public method可以在类外调用,而你却在Activity里找不着也是自然的,可以考虑在类外头寻找。
  2. 移植了一款游戏yap,被MM打回,说不支持HOME键,和来电中断恢复
    费了2天时间搞定了这个问题,可是还有一个问题,就是yap里的sprite移动速度很慢,怎么解决呢?
    首先想到的方法是做native code profiling,找出哪几个函数花的时间比较长,可是怎么做native code profilling呢?
    平常的代码里嵌入Debug.StartMethodTracing,只对java code做profiloing,对native code是不管用的。
    可以使用emulator -trace yap来enable trace feature,然后使用F9来切换profiling开关,如此得到的profiling文件就会放置yap目录下。
    可是这样得到的trace文件,使用什么tools来分析呢?
    答案是到android的source里,找build/envsetup.sh,该shell文件里有个tracedmdump函数,可是这个函数还依赖于其他的一些command,比如post_trace,所以需要手动编译android emulator来得到这些commands。
    下面是编译android emulator的步骤:
  3. 很久得不到答案的东西,今天(2010/08/23)找到了
    就是当android屏幕发生横竖切换时,系统缺省会执行onPause/onStop/onDestroy/onCreate来重启Activity,这个行为是可以改变的,只要在manifest里稍微定制一下,请看:
  4. <activity android:name=".GNURobboActivity"
              android:label="@string/app_name"
              android:configChanges="orientation|keyboardHidden">
    黑体部分即是答案所在,然后override activity GNURobboActivity的onConfigurationChanged函数

    @Override
    public void onConfigurationChanged(Configuration newConfig){
        Log.i(TAG, "onConfigurationChanged() is called!");
        super.onConfigurationChanged(newConfig);
    }
    如此这般,当做横竖屏切换时,onConfigurationChanged函数即会别调用,而不是activity被重启
    和这个话题相关的另外一个知识点是:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);可以用来完成强制横屏或竖屏。

Advertisements