首页 > 代码库 > Android之Activity的标准写法参考

Android之Activity的标准写法参考

之前写一些小程序的时候,都是拿来模板就用,没有细究过良好的编码规范,在看GOOGLE原生的例子的时候,发现很多编码规范可以

借鉴,同样以BluetoothChat这个原生工程中的主UI Activity(BluetoothChat.java)来举例吧:

1. 相关控制变量(调试开关)和成员变量的声明:

  // Debugging    private static final String TAG = "BluetoothChat";    private static final boolean D = true;    // Message types sent from the BluetoothChatService Handler    public static final int MESSAGE_STATE_CHANGE = 1;    public static final int MESSAGE_READ = 2;    public static final int MESSAGE_WRITE = 3;    public static final int MESSAGE_DEVICE_NAME = 4;    public static final int MESSAGE_TOAST = 5;    // Key names received from the BluetoothChatService Handler    public static final String DEVICE_NAME = "device_name";    public static final String TOAST = "toast";    // Intent request codes    private static final int REQUEST_CONNECT_DEVICE_SECURE = 1;    private static final int REQUEST_CONNECT_DEVICE_INSECURE = 2;    private static final int REQUEST_ENABLE_BT = 3;    // Layout Views    private ListView mConversationView;    private EditText mOutEditText;    private Button mSendButton;    // Name of the connected device    private String mConnectedDeviceName = null;    // Array adapter for the conversation thread    private ArrayAdapter<String> mConversationArrayAdapter;    // String buffer for outgoing messages    private StringBuffer mOutStringBuffer;    // Local Bluetooth adapter    private BluetoothAdapter mBluetoothAdapter = null;    // Member object for the chat services    private BluetoothChatService mChatService = null;

2. 复写onCreat(), onStart()等父类Activity的函数:

  @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if(D) Log.e(TAG, "+++ ON CREATE +++");        // Set up the window layout        setContentView(R.layout.main);        // Get local Bluetooth adapter        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();        // If the adapter is null, then Bluetooth is not supported        if (mBluetoothAdapter == null) {            Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();            finish();            return;        }    }

 

  @Override    public void onStart() {        super.onStart();        if(D) Log.e(TAG, "++ ON START ++");        // If BT is not on, request that it be enabled.        // setupChat() will then be called during onActivityResult        if (!mBluetoothAdapter.isEnabled()) {            Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);            startActivityForResult(enableIntent, REQUEST_ENABLE_BT);        // Otherwise, setup the chat session        } else {            if (mChatService == null) setupChat();        }    }

3. 定义相关成员方法:

  private void setupChat() {        Log.d(TAG, "setupChat()");        // Initialize the array adapter for the conversation thread        mConversationArrayAdapter = new ArrayAdapter<String>(this, R.layout.message);        mConversationView = (ListView) findViewById(R.id.in);        mConversationView.setAdapter(mConversationArrayAdapter);        // Initialize the compose field with a listener for the return key        mOutEditText = (EditText) findViewById(R.id.edit_text_out);        mOutEditText.setOnEditorActionListener(mWriteListener);        // Initialize the send button with a listener that for click events        mSendButton = (Button) findViewById(R.id.button_send);        mSendButton.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                // Send a message using content of the edit text widget                TextView view = (TextView) findViewById(R.id.edit_text_out);                String message = view.getText().toString();                sendMessage(message);            }        });        // Initialize the BluetoothChatService to perform bluetooth connections        mChatService = new BluetoothChatService(this, mHandler);        // Initialize the buffer for outgoing messages        mOutStringBuffer = new StringBuffer("");    }

4. 复写相关事件响应函数:

  @Override    public boolean onOptionsItemSelected(MenuItem item) {        Intent serverIntent = null;        switch (item.getItemId()) {        case R.id.secure_connect_scan:            // Launch the DeviceListActivity to see devices and do scan            serverIntent = new Intent(this, DeviceListActivity.class);            startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_SECURE);            return true;        case R.id.insecure_connect_scan:            // Launch the DeviceListActivity to see devices and do scan            serverIntent = new Intent(this, DeviceListActivity.class);            startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_INSECURE);            return true;        case R.id.discoverable:            // Ensure this device is discoverable by others            ensureDiscoverable();            return true;        }        return false;    }

 

Android之Activity的标准写法参考