Thursday, December 10, 2015

关于Activity的周期问题



沙沙说他们有个奇怪的bug
XXX :
  好的
  我们这边 有一个问题
  点了返回键 没有反应
  我发现点返回键 马上就finish
  但是 destory35s以后

12-17 13:11:55.333   796   875 I am_finish_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,0,no-history]
12-17 13:12:30.740   796   875 I am_destroy_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,0,finish-idle]

我打了一个一般情况下的
12-17 14:41:03.195  1145  3641 I am_finish_activity: [0,21355194,236,com.sy.mywidgettest/mymenu.MenuTest2,app-request]
12-17 14:41:03.715  1145  3480 I am_destroy_activity: [0,268937050,236,com.sy.mywidgettest/.MyWidgetTest,finish-idle]
12-17 14:41:03.715  1145  3467 I am_proc_died: [0,9953,com.android.keychain,15,51,628]
12-17 14:41:03.725  1145  1174 I am_proc_bound: [0,10711,com.sec.android.widgetapp.dualclockdigital]
12-17 14:41:03.845  1145  3277 I am_kill : [0,9970,com.sec.android.app.popupuireceiver,15,empty #31]
12-17 14:41:03.895  1145  3256 I am_proc_died: [0,9970,com.sec.android.app.popupuireceiver,15,45,629]
12-17 14:41:03.995  1145  1184 I am_destroy_activity: [0,21355194,236,com.sy.mywidgettest/mymenu.MenuTest2,finish-imm]
基本上一秒内就结束了

我问Ma:
‎‎Irene:
  马哥~  请教个问题~
  12-17 13:11:55.333   796   875 I am_finish_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,0,no-history]
  什么时候走的是am_finish_activity  然后后面是no-history
‎‎Ma:
  启动的时候Intent带有FLAG_ACTIVITY_NO_HISTORY这个flag
  或者
Activity配置了这个属性:FLAG_NO_HISTORY

然后猫大分析了

ActivityStackSupervisor.java
   // Finish any activities that are scheduled to do so but have been
   // waiting for the next one to start.
   for (int i = 0; i < NF; i++) {
       r = finishes.get(i);
       activityRemoved |= r.task.stack.destroyActivityLocked(r, true, false, "finish-idle");
   }
ActivityStack.java
       // If the most recent activity was noHistory but was only stopped rather
       // than stopped+finished because the device went to sleep, we need to make
       // sure to finish it as we're making a new activity topmost.
       if (mService.mSleeping && mLastNoHistoryActivity != null &&
               !mLastNoHistoryActivity.finishing) {
           if (DEBUG_STATES) Slog.d(TAG, "no-history finish of " + mLastNoHistoryActivity +
                   " on new resume");
           requestFinishActivityLocked(mLastNoHistoryActivity.appToken, Activity.RESULT_CANCELED,
                   null, "no-history", false);
           mLastNoHistoryActivity = null;
       }

然后猫大说  这是被suspend…(没懂)

然后看log

12-17 13:11:54.393   796  1233 I am_create_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,NULL,NULL,NULL,1485045760,com.android.stk,0]
12-17 13:11:54.443   796   916 I am_restart_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,0]
12-17 13:11:54.543  1191  1191 I am_on_resume_called: [0,com.android.stk.StkDialogActivity]
12-17 13:11:54.613   796  1232 I am_pause_activity: [0,1113287144,com.android.stk/.StkDialogActivity,0]
12-17 13:11:54.623  1191  1191 I am_on_paused_called: [0,com.android.stk.StkDialogActivity]
12-17 13:11:55.333   796   875 I am_finish_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,0,no-history]
12-17 13:12:30.740   796   875 I am_destroy_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,0,finish-idle]
12-17 13:12:31.050   244   244 I sf_frame_dur: [com.android.stk/com.android.stk.StkDialogActivity,15,0,0,0,0,0,1]

我们看它怎么on_paused
12-17 13:11:54.623  1191  1191 I am_on_paused_called: [0,com.android.stk.StkDialogActivity]
12-17 13:11:54.633   796  1242 I am_restart_activity: [0,1119819928,7,com.baidu.map.location/.ConfirmAlertActivity1,0]
12-17 13:11:54.733  1157  1157 I am_on_resume_called: [0,com.baidu.map.location.ConfirmAlertActivity1]
起了一个ConfirmAlertActivity1,在它前面了


正常情况下是这样  应该没有on_paused_called
I am_create_activity: [0,1119651592,8,com.android.contacts/com.android.dialer.DialtactsActivity,android.intent.action.MAIN,NULL,NULL,278921216,com.sec.android.app.launcher,0]
I am_restart_activity: [0,1119651592,8,com.android.contacts/com.android.dialer.DialtactsActivity,0]
I am_pause_activity: [0,1119651592,com.android.contacts/com.android.dialer.DialtactsActivity,0]
I am_finish_activity: [0,1119651592,8,com.android.contacts/com.android.dialer.DialtactsActivity,0,app-request]
I am_destroy_activity: [0,1119651592,8,com.android.contacts/com.android.dialer.DialtactsActivity,0,finish-idle]


12-17 13:12:30.520   796  1098 I am_finish_activity: [0,1119819928,7,com.baidu.map.location/.ConfirmAlertActivity1,0,app-request]
12-17 13:12:30.550   796   876 I power_partial_wake_state: [1,LocationManagerService]
12-17 13:12:30.680   796  1098 I am_pause_activity: [0,1119819928,com.baidu.map.location/.ConfirmAlertActivity1,0]
12-17 13:12:30.690   796  1098 I power_partial_wake_state: [1,ActivityManager-Launch]
12-17 13:12:30.690   796  1098 I wm_task_moved: [5,1,5]
12-17 13:12:30.700   796   796 I power_partial_wake_state: [0,LocationManagerService]
12-17 13:12:30.700  1157  1157 I am_on_paused_called: [0,com.baidu.map.location.ConfirmAlertActivity1]
12-17 13:12:30.710   796  1215 I am_resume_activity: [0,1122878192,5,com.android.settings/.SubSettings,0]
12-17 13:12:30.740   796   875 I am_destroy_activity: [0,1119819928,7,com.baidu.map.location/.ConfirmAlertActivity1,0,finish-imm]
12-17 13:12:30.740   796   875 I am_destroy_activity: [0,1113287144,6,com.android.stk/.StkDialogActivity,0,finish-idle]


No comments:

Post a Comment