您的位置:首页 > 编程语言

一段代码的欣赏--------关于super.xx()方法的使用

2013-06-25 18:07 627 查看
import android.app.Activity;

import android.hardware.Sensor;

import android.hardware.SensorEvent;

import android.hardware.SensorEventListener;

import android.hardware.SensorManager;

import android.os.Bundle;

import android.view.Window;

import android.view.WindowManager;



public class AgileBuddyActivity extends Activity {

private AgileBuddyView mAgileBuddyView;

private SensorManager mSensorManager;

private Sensor mSensor;

private SensorEventListener mSensorEventListener;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); (1)

// 取消标题

requestWindowFeature(Window.FEATURE_NO_TITLE);

// 禁止屏幕休眠

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,

WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

// 全屏幕

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.main);

mAgileBuddyView = (AgileBuddyView) findViewById(R.id.agile_buddy);

mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

mSensorEventListener = new SensorEventListener() {

public void onSensorChanged(SensorEvent e) {

mAgileBuddyView.handleMoving(e.values[SensorManager.DATA_X]);

}

public void onAccuracyChanged(Sensor s, int accuracy) {

}

};

// 注册重力感应监听

mSensorManager.registerListener(mSensorEventListener, mSensor,

SensorManager.SENSOR_DELAY_GAME);

}

@Override

public void finish() {

// 注销重力感应监听

mSensorManager.unregisterListener(mSensorEventListener, mSensor);

super.finish(); (2)

}

}

android 中经常不知道复写父类的方法时,super.xx(ArgumentsSets)应该放在哪里,或是干脆可以不要?

上面这段代码给了我一个很有说服力的解释。android底层会自己去调用这些回调方法,当然父类做了一

些事情。而我们也想再在这些方法里面添加一些操作,应该放在哪里取决于具体场景。

(1)中,创建一个Activity时,我们的代码要等系统创建好了才能够很好的执行,所以应该放在

super.onCreate(savedInstance)后面;

(2)中,我们的代码希望在Activity销毁之前调用,所以需要放在super.finish()之前调用。所以我们的操作放

在super.finish()前面。

(super.finish()会调用onDestroy方法)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐