onAttachedToWindow()与onWindowFocusChanged()使用

在学习recyclerview的时候看到onWindowFocusChanged()的方法,平时没有怎么用,然后百度一下看看怎么用,结果看到onAttachedToWindow()方法,又继续查阅看了一些源码,对于我这种小白来说,看源码还是有点头晕的,为了以防忘记,还是记录一下:

先看onAttachedToWindow();

看了一下:http://blog.csdn.net/guxiao1201/article/details/41517871

这篇写的详细了,看了就懂80%

package com.boerc.view;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

/**
 * @author Administrator
 */
public class MainActivity extends AppCompatActivity {

    private String Tag = "MainActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        Log.e(Tag, "onCreate");
    }

    public void init() {
        Button nextBtn = (Button) findViewById(R.id.text);
        nextBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, Main2Activity.class);
                startActivity(intent);
            }
        });
        Button nextBackBtn = (Button) findViewById(R.id.text1);
        nextBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, Main2Activity.class);
                startActivityForResult(intent, 10);
            }
        });

        Button dialogBtn = (Button) findViewById(R.id.text2);
        dialogBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new AlertDialog.Builder(MainActivity.this)
                        .setTitle("确认")
                        .setMessage("确定吗?")
                        .setPositiveButton("是", null)
                        .setNegativeButton("否", null)
                        .show();
            }
        });
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.e(Tag, "onReStart");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.e(Tag, "onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.e(Tag, "onResume");
    }

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        Log.e(Tag, "onAttachedToWindow");
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            Log.e(Tag, "onWindowFocusChanged:" + "true");
        } else {
            Log.e(Tag, "onWindowFocusChanged:" + "false");
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.e(Tag, "onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.e(Tag, "onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.e(Tag, "onDestroy");
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.e(Tag, "onActivityResult");
    }
}
把每个生命周期都打印一下:

一进来就执行了这些方法

写app的时候经常会测量宽高

View view = getWindow().getDecorView();  
WindowManager.LayoutParams lp = (WindowManager.LayoutParams)view.getLayoutParams();  
lp.gravity = Gravity.CENTER;  
lp.width = (dm.widthPixels * 4) / 5;  
lp.height = (dm.widthPixels * 4) / 5;   
为啥在oncreate会获取不到数据呢,,,
看看那个连接就会明白这里不多解释

做了很多的操作,但是就只有第一次进入的时候看到过的时候,再也没有执行过了,由此可知,onAttachedToWindow()只执行一次,什么时候调用得看自己的情景了。

onWindowFocusChanged()

这个onWindowFocusChanged指的是这个Activity得到或者失去焦点的时候 就会call。。
也就是说 如果你想要做一个Activity一加载完毕,就触发什么的话 完全可以用这个

当点击AlertDialog的时候就是如上图的弹出的时候就是false 消失的时候就是true  

同样跳转的时候activity失去焦点为false,当返回的时候为true。

看了大致能明白了一些,还是得自己去尝试才能豁然开朗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值