Android基础回顾之Activity

2018-09-04  本文已影响0人  Man不经心

Activity:

是与用户交互的接口,Android系统是通过Activity栈的形式来管理Activity

1.Activity任务栈:

通过栈存储Activities,不在栈顶端,越是在栈底端,越是在内存不足状态下可能被系统销毁回收
四种形态:


2.Activity生命周期:

正常状态下生命周期:

oncreate(创建)
|
onstart(可见不可交互)
|
onresume(可见并且可以交互)Activty处于Active状态
|
onPause
|
onstop(不可见后台运行)--(应用切换到前台)-->onRestart-->onStart...
|
onDestroy(正在被销毁)

异常状态下生命周期处理:

多了两个方法:onSaveInstanceState(异常终止状态保存)和onRestoreInstanceState(数据恢复)

总结


3.Activity之间通信


4.Activity将数据传递给Fragment:


5.Fragment将数据传递给Activity

//Fragment
public class Fragment3 extends Fragment implements View.OnClickListener {
    // 2.1 定义用来与外部activity交互,获取到宿主activity
    private FragmentListener listener;

    // 1 定义了所有activity必须实现的接口方法
    public interface FragmentListener {
        void process(String str);
    }

    // 当Fragment被加载到activity的时候会被回调
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        if(activity instanceof FragmentListener) {
            listener = (FragmentListener)activity; // 2.2 获取到宿主activity并赋值
        } else{
            throw new IllegalArgumentException("activity must implements FragmentListener");
        }
    }

    @Override
    public void onClick(View v) {
        listener.process("我是接口"); //3.1 执行回调
    }

    //把传递进来的activity对象释放掉,保证不会内存泄漏
    @Override
    public void onDetach() {
        super.onDetach();
        listener = null;
    }
}
//Activity
public class FragmentActivity3 extends Activity implements Fragment3.FragmentListener {
    @Override
    public void process(String str) {
        //todo
    }
}

6.Activity与Service数据通信

//Activity
intent = new Intent(ServiceActivity.this, MyService.class);
intent.putExtra("data","data");
startService(intent);
//Service
onStartCommand()
data = intent.getStringExtra("data");

7.Activity启动模式:

singleTop和standard都不会创建新的任务栈

上一篇下一篇

猜你喜欢

热点阅读