mvc与音频播放

本文介绍了MVC模式在音频播放中的角色分配,模型层负责音频数据及控制方法,视图层呈现页面,控制器层作为桥梁连接两者。重点讨论了控制层的代码组织,强调了onAttach(), onDetach(), onCreate(), onCreateView()等生命周期方法在音频播放场景中的作用,特别是对fragment的保留和视图重建的重要性。" 130988985,7979952,Oracle数据库使用Kettle进行数据分表与插入,"['数据库', 'ETL', 'Java']

mvc
m:模型
v :视图
c :控制

模型层,可以粗略理解为是属于纯纯的类,绝不与v层有任何关系,就音频播放来说,音频是数据,绝对是属于m层,那么相对应的就有一些控制音频的方法;模型层最接近于java里面的类;

public class AudioPlayer {          //音频播放器和管理它的方法
    private MediaPlayer player;
    public void stop(){...}
    public void play(Context c)
    {...}
    public void pause()
    {...}
}

v层 视图层,主要用于展现视图,有页面,以xml为例,不管有没有人用,都是一个页面,fragment加载就叫做fragment ,activity加载就叫做activity;

c层,最麻烦的一层,我们非常容易的能够看见c层有一大堆的代码,而且都是必须的;

       protected void onCreate(Bundle savedInstanceState) { //加载xml页面,此处是activity,fragment一布局形式加入activity中
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_moon);
    }
public class HelloMoonFragment extends Fragment {
    private Button playbutton;
    private  Button stopbutton;
    private  Button pausebutton;
    private  AudioPlayer player = new AudioPlayer();

    @Override
    public  void onCreate(Bundle s)
    {....}
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle s)
    {...}
    @Override
    public void onDestroy()
    {...}
}

控制层是连接视图和模型的桥梁;视图中的控件都是死的,只有通过控制层与某些方法连接起来,才能生动,比如说:

  private  Button pausebutton;     //将视图中的button拿了出来,将它的点击事件与 player.pause();关联起来;
   pausebutton =(Button)v.findViewById(R.id.hello_pauseButton);
        pausebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                player.pause();
            }
        });

当然,除了基本的关联,还有对生命周期中调用各种方法;

    public  void onCreate(Bundle s)
    {
        super.onCreate(s);
        setRetainInstance(true);    //保证其旋转屏幕时fragment不重启,保留fragment

    }

这里写图片描述

注意两点onAttach(),onDetach();
onCreate(),onCreateView();
第一点:fragment的保留,然后重新加载视图;

第二点:onCreate() 和onCreateView()是有显著区别的;
只有当View已经加载,我们才能找到视图上的某一个button,而onCreate()方法则是用来初始化除View以外的其他内容的

 pausebutton =(Button)v.findViewById(R.id.hello_pauseButton);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值