(八十五)探究activity生命周期和onMeasure/onLayout/onDraw的时序
发布日期:2021-06-30 15:25:14
浏览次数:2
分类:技术文章
本文共 26931 字,大约阅读时间需要 89 分钟。
1.demo
源码先不看,先从应用的角度加个log有个简单认识。
复用下之前写的自定义view 的demo,通过在activity的onCreate/onStart/onResume中以及自定义组件的onMeasure/onLayout/onDraw中添加log观察时序,添加new RuntimeException打印调用堆栈。
package com.example.demo_21_custom_view;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;public class MainActivity extends AppCompatActivity { private static final String TAG = HelloWorldTextView.TAG; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate",new RuntimeException()); setContentView(R.layout.activity_main); } @Override protected void onStart() { super.onStart(); Log.d(TAG, "onStart",new RuntimeException()); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG, "onRestart",new RuntimeException()); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "onResume",new RuntimeException()); } @Override protected void onPause() { super.onPause(); Log.d(TAG, "onPause"); }}
package com.example.demo_21_custom_view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.text.TextUtils;import android.util.AttributeSet;import android.util.Log;import android.view.View;import java.util.ArrayList;public class HelloWorldTextView extends View { public static final String TAG = "HelloWorldTextView"; /** * 需要绘制的文字 */ private String mText; private ArrayListmTextList; /** * 文本的颜色 */ private int mTextColor; /** * 文本的大小 */ private float mTextSize; /** * 绘制时控制文本绘制的范围 */ private Rect mBound; private Paint mPaint; boolean isOneLines = true; float lineNum; float spLineNum; public HelloWorldTextView(Context context) { this(context, null); } public HelloWorldTextView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public HelloWorldTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); /*mText = "hello world"; mTextColor = Color.BLACK; mTextSize = 100;*/ mTextList = new ArrayList<>(); //获取自定义属性的值 TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyTextView, defStyleAttr, 0); mText = a.getString(R.styleable.MyTextView_mText); mTextColor = a.getColor(R.styleable.MyTextView_mTextColor, Color.BLACK); mTextSize = a.getDimension(R.styleable.MyTextView_mTextSize, 100); a.recycle(); //注意回收 mPaint = new Paint(); mPaint.setTextSize(mTextSize); mPaint.setColor(mTextColor); //获得绘制文本的宽和高 mBound = new Rect(); mPaint.getTextBounds(mText, 0, mText.length(), mBound); } @Override protected void onDraw(Canvas canvas) { Log.d(TAG, "onDraw", new RuntimeException()); //绘制文字 //canvas.drawText(mText, getWidth() / 2 - mBound.width() / 2, getHeight() / 2 + mBound.height() / 2, mPaint); //绘制文字 for(int i = 0; i
2.log
第一次启动
08-25 15:14:18.352 20065-20065/? D/HelloWorldTextView: onCreate java.lang.RuntimeException at com.example.demo_21_custom_view.MainActivity.onCreate(MainActivity.java:13) at android.app.Activity.performCreate(Activity.java:7053) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2805) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2927) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:14:18.435 20065-20065/? D/HelloWorldTextView: onStart java.lang.RuntimeException at com.example.demo_21_custom_view.MainActivity.onStart(MainActivity.java:20) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1334) at android.app.Activity.performStart(Activity.java:7070) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2815) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2927) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:14:18.441 20065-20065/? D/HelloWorldTextView: onResume java.lang.RuntimeException at com.example.demo_21_custom_view.MainActivity.onResume(MainActivity.java:32) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1355) at android.app.Activity.performResume(Activity.java:7157) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3655) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3720) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2933) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:14:18.461 20065-20065/? D/HelloWorldTextView: onMeasure java.lang.RuntimeException at com.example.demo_21_custom_view.HelloWorldTextView.onMeasure(HelloWorldTextView.java:87) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1167) at android.widget.LinearLayout.onMeasure(LinearLayout.java:687) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:724) at android.view.View.measure(View.java:22024) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2438) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1526) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1779) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1414) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6801) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1026) at android.view.Choreographer.doCallbacks(Choreographer.java:838) at android.view.Choreographer.doFrame(Choreographer.java:769) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1012) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:14:18.461 20065-20065/? V/HelloWorldTextView: 宽的模式:-2147483648 高的模式:-2147483648 宽的尺寸:1078 高的尺寸:1744 文本:天将降大任于斯人也 必先苦其心志 劳其筋骨 饿其皮肤 空伐其身 行弗乱其所为 所以动心忍性 曾益其所不能 文本总长度:52 能绘制文本的宽度:15 需要绘制:4.0行 lineLength:15 lineStr:天将降大任于斯人也 必先苦其心 lineStr:志 劳其筋骨 饿其皮肤 空伐其 lineStr:身 行弗乱其所为 所以动心忍性 lineStr: 曾益其所不能 文本的宽度:3172.0控件的宽度:1078 文本的高度:62.0控件的高度:35808-25 15:14:18.471 20065-20065/? D/HelloWorldTextView: onMeasure java.lang.RuntimeException at com.example.demo_21_custom_view.HelloWorldTextView.onMeasure(HelloWorldTextView.java:87) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1167) at android.widget.LinearLayout.onMeasure(LinearLayout.java:687) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:22024) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6582) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:724) at android.view.View.measure(View.java:22024) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2438) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2183) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1414) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6801) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1026) at android.view.Choreographer.doCallbacks(Choreographer.java:838) at android.view.Choreographer.doFrame(Choreographer.java:769) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1012) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:14:18.471 20065-20065/? V/HelloWorldTextView: 宽的模式:-2147483648 高的模式:-2147483648 宽的尺寸:108008-25 15:14:18.472 20065-20065/? V/HelloWorldTextView: 高的尺寸:1940 文本的宽度:3172.0控件的宽度:1080 文本的高度:62.0控件的高度:35808-25 15:14:18.473 20065-20065/? D/HelloWorldTextView: onLayout java.lang.RuntimeException at com.example.demo_21_custom_view.HelloWorldTextView.onLayout(HelloWorldTextView.java:185) at android.view.View.layout(View.java:19612) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1780) at android.widget.LinearLayout.onLayout(LinearLayout.java:1546) at android.view.View.layout(View.java:19612) at android.view.ViewGroup.layout(ViewGroup.java:6055) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19612) at android.view.ViewGroup.layout(ViewGroup.java:6055) at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443) at android.view.View.layout(View.java:19612) at android.view.ViewGroup.layout(ViewGroup.java:6055) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19612) at android.view.ViewGroup.layout(ViewGroup.java:6055) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) at android.widget.LinearLayout.onLayout(LinearLayout.java:1544) at android.view.View.layout(View.java:19612) at android.view.ViewGroup.layout(ViewGroup.java:6055) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at com.android.internal.policy.DecorView.onLayout(DecorView.java:761) at android.view.View.layout(View.java:19612) at android.view.ViewGroup.layout(ViewGroup.java:6055) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2512) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2228) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1414) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6801) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1026) at android.view.Choreographer.doCallbacks(Choreographer.java:838) at android.view.Choreographer.doFrame(Choreographer.java:769) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1012) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:14:18.495 20065-20065/? D/HelloWorldTextView: onDraw java.lang.RuntimeException at com.example.demo_21_custom_view.HelloWorldTextView.onDraw(HelloWorldTextView.java:72) at android.view.View.draw(View.java:19145) at android.view.View.updateDisplayListIfDirty(View.java:18095) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.draw(View.java:19148) at com.android.internal.policy.DecorView.draw(DecorView.java:788) at android.view.View.updateDisplayListIfDirty(View.java:18095) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:652) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:658) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:766) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3027) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2822) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2375) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1414) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6801) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1026) at android.view.Choreographer.doCallbacks(Choreographer.java:838) at android.view.Choreographer.doFrame(Choreographer.java:769) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1012) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:14:18.496 20065-20065/? V/HelloWorldTextView: mBound.h:61 在X:59 Y:55 绘制:天将降大任于斯人也 必先苦其心 mBound.h:62 在X:110 Y:117 绘制:志 劳其筋骨 饿其皮肤 空伐其 mBound.h:62 在X:85 Y:179 绘制:身 行弗乱其所为 所以动心忍性 mBound.h:61 在X:341 Y:238 绘制: 曾益其所不能
灭屏一段时间后亮屏
08-25 15:32:00.203 20065-20065/com.example.demo_21_custom_view D/HelloWorldTextView: onRestart java.lang.RuntimeException at com.example.demo_21_custom_view.MainActivity.onRestart(MainActivity.java:26) at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1344) at android.app.Activity.performRestart(Activity.java:7138) at android.app.Activity.performResume(Activity.java:7149) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3655) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3720) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1668) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:32:00.204 20065-20065/com.example.demo_21_custom_view D/HelloWorldTextView: onStart java.lang.RuntimeException at com.example.demo_21_custom_view.MainActivity.onStart(MainActivity.java:20) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1334) at android.app.Activity.performStart(Activity.java:7070) at android.app.Activity.performRestart(Activity.java:7144) at android.app.Activity.performResume(Activity.java:7149) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3655) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3720) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1668) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:32:00.205 20065-20065/com.example.demo_21_custom_view D/HelloWorldTextView: onResume java.lang.RuntimeException at com.example.demo_21_custom_view.MainActivity.onResume(MainActivity.java:32) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1355) at android.app.Activity.performResume(Activity.java:7157) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3655) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3720) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1668) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:32:00.233 20065-20065/com.example.demo_21_custom_view D/HelloWorldTextView: onDraw java.lang.RuntimeException at com.example.demo_21_custom_view.HelloWorldTextView.onDraw(HelloWorldTextView.java:72) at android.view.View.draw(View.java:19145) at android.view.View.updateDisplayListIfDirty(View.java:18095) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4216) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.draw(View.java:19148) at com.android.internal.policy.DecorView.draw(DecorView.java:788) at android.view.View.updateDisplayListIfDirty(View.java:18095) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:652) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:658) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:766) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3027) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2822) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2375) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1414) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6801) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1026) at android.view.Choreographer.doCallbacks(Choreographer.java:838) at android.view.Choreographer.doFrame(Choreographer.java:769) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1012) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6672) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)08-25 15:32:00.233 20065-20065/com.example.demo_21_custom_view V/HelloWorldTextView: mBound.h:61 在X:59 Y:55 绘制:天将降大任于斯人也 必先苦其心 mBound.h:62 在X:110 Y:117 绘制:志 劳其筋骨 饿其皮肤 空伐其08-25 15:32:00.234 20065-20065/com.example.demo_21_custom_view V/HelloWorldTextView: mBound.h:62 在X:85 Y:179 绘制:身 行弗乱其所为 所以动心忍性 mBound.h:61 在X:341 Y:238 绘制: 曾益其所不能
3.总结
时序简单看起来是
第一次启动:onCreate-onStart-onResume-onMeasure-onLayout-onDraw
可是为嘛onMeasure调用了两次,不合适呀。。。
灭屏一段时间后亮屏:onRestart-onStart-onResume-onDraw
转载地址:https://jiatai.blog.csdn.net/article/details/82051762 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月10日 15时44分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring Boot 安全框架 Shiro 入门
2019-05-01
如何用一句话激怒互联网人?
2019-05-01
用 Python 爬了点你们喜欢的电影
2019-05-01
推荐一位川大零基础转行 Python 的人生勇士
2019-05-01
讲真,做Python一定不要只会一个方向!
2019-05-01
Python 2大限来了!113天后自生自灭,官方不再维护更新
2019-05-01
GitHub 热榜第一的 Python 抢票神器!节假日能用上
2019-05-01
1.6w 星开源项目,但作者月薪却不到 5K
2019-05-01
Python解惑之:整数比较
2019-05-01
Python解惑之:True与False
2019-05-01
你要的微信小程序终于来了
2019-05-01
我的2016书单
2019-05-01
冷眼看小程序
2019-05-01
为什么执行 x in range(y) 如此快?
2019-05-01
看完这篇文章你还不理解 Python 装饰器,只有一种可能...
2019-05-01
Python干货:表达式 i += x 与 i = i + x 等价吗?
2019-05-01
有了这些 Chrome 插件,效率提升10倍(建议收藏)
2019-05-01
Python 编码错误的本质原因
2019-05-01
Python 开发者都会遇到的错误:UnboundLocalError
2019-05-01
用 Python 送“爱心”
2019-05-01