android中子activity是否必须重写oncreate()
大家讲道理
大家讲道理 2017-04-18 09:06:34
0
2
705

子activity是否必须重写oncreate(),如果不是必须的话,子activity默认调用该方法的原理是什么。

父类Activity:

public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener {
    protected Context mContext;
    private ConnectivityManager manager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);// 锁定竖屏
        mContext = getActivityContext();
        initView();
        ButterKnife.bind(this);
        initdata();
        MyApplication.getInstance().addActivity(this);
    }
    /**
     * 初始activity方法
     */
    private void initView() {
        loadViewLayout();
    }
    private void initdata(){
        findViewById();
        setListener();
        processLogic();
    }
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
//        StatService.onPause(mContext);
    }
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
//        StatService.onResume(mContext);
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        MyApplication.getInstance().finishActivity(this);
    }
    /**
     * 加载页面layout
     */
    protected abstract void loadViewLayout();

    /**
     * 加载页面元素
     */
    protected abstract void findViewById();

    /**
     * 设置各种事件的监听器
     */
    protected abstract void setListener();

    /**
     * 业务逻辑处理,主要与后端交互
     */
    protected abstract void processLogic();


    /**
     * Activity.this
     */
    protected abstract Context getActivityContext();

子类 Activity:

public class WelcomeActivity extends BaseActivity {

    @Override
    protected void loadViewLayout() {
        setContentView(R.layout.activity_welcome);
    }

    @Override
    protected void findViewById() {

    }

    @Override
    protected void setListener() {

    }

    @Override
    protected void processLogic() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(WelcomeActivity.this,HomeTabActivity.class));
                finish();
            }
        }, 2000);
    }

    @Override
    protected Context getActivityContext() {
        return this;
    }

    @Override
    public void onClick(View view) {

    }
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(2)
Peter_Zhu

Dalam berorientasikan objek, subkelas akan mewarisi atribut tingkah laku kelas induk Oleh itu, subkelas tidak perlu mengatasi fungsi onCreate(...).

Dengan segala hormatnya, saya ingin mengesyorkan dua buku yang bagus kepada anda:

  1. O'Reilly: Head First Java (versi Cina edisi ke-2 meliputi Java5.0)

  2. Pemikiran Pengaturcaraan Java (Edisi Ke-4) (Berfikir dalam Java)

左手右手慢动作

Berdasarkan kod sumber yang anda kongsi, oncrate tidak diabstrakkan dalam kelas induk anda, BaseActivity, jadi sudah tentu ia tidak perlu dipanggil, tetapi subkelas juga boleh menulis semula untuk subActivity, ia akan dipanggil oleh lalai. Prinsip kaedah ini lebih Mudah sahaja:
Apabila mesin maya Java melaksanakan program, kelas induk akan dilaksanakan terlebih dahulu, jadi kaedah Oncreate kelas induk akan dilaksanakan pada permulaan, dan kemudian kaedah abstrak dalam subkelas tidak akan dipanggil dalam kelas induk Jadi apabila melaksanakan kepada subkelas, kaedah ini dilaksanakan!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan