(八十五)探究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 ArrayList
mTextList; /** * 文本的颜色 */ 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:(八十六)探讨WiFi开关变化的原因
下一篇:(八十四)学习wpa_supplicant-devel——chapter3

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月10日 15时44分13秒