Android 习惯写法

有些习惯写法可能会提高性能和可维护性

用Activity类去实现各种监听器

public class ListenerDemoActivity extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_listener_demo);
        findViewById(R.id.btn1).setOnClickListener(this);
        findViewById(R.id.btn2).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn1:
                Toast.makeText(this, "click btn 1", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn2:
                Toast.makeText(this, "click btn 2", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }

}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="click me" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btn1"
        android:text="click me again" />

</RelativeLayout>
优点:没有新建很多监听器实例,节省了运行时间和内存。同时将监听器的代码写到了一起,方便查找

缺点:扩展时可能会有问题,面向对象编程反对switch-case的使用。这里有待考虑,尤其是软件扩展性的满足

总体感觉这么些代码会更整齐

Android 中使用 Socket 进行通讯可以分为服务端和客户端两种角色,下面分别介绍它们的写法: ### 服务端 服务端需要监听一个端口,并在有客户端连接时接受客户端的请求并返回响应。以下是服务端的基本写法: ```java try { // 创建一个 ServerSocket 对象,指定监听的端口号 ServerSocket serverSocket = new ServerSocket(8888); Log.d("Server", "Server started: " + serverSocket); while (true) { // 接受客户端的连接请求,返回一个 Socket 对象 Socket clientSocket = serverSocket.accept(); Log.d("Server", "Client connected: " + clientSocket); // 从输入流中读取客户端发送的数据 InputStream inputStream = clientSocket.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String request = reader.readLine(); // 读取一行数据 // 向输出流中写入响应数据 OutputStream outputStream = clientSocket.getOutputStream(); outputStream.write("Hello, client!\n".getBytes()); // 关闭连接 clientSocket.close(); } } catch (IOException e) { e.printStackTrace(); } ``` ### 客户端 客户端需要连接到服务端指定的端口,并向服务端发送请求并接收响应。以下是客户端的基本写法: ```java try { // 创建一个 Socket 对象,指定服务端的 IP 地址和端口号 Socket socket = new Socket("server-ip-address", 8888); Log.d("Client", "Connected to server: " + socket); // 向输出流中写入请求数据 OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello, server!\n".getBytes()); // 从输入流中读取服务端的响应数据 InputStream inputStream = socket.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String response = reader.readLine(); // 读取一行数据 Log.d("Client", "Response from server: " + response); // 关闭连接 socket.close(); } catch (IOException e) { e.printStackTrace(); } ``` 注意,在 Android 中访问网络需要在 AndroidManifest.xml 中声明网络访问权限:`<uses-permission android:name="android.permission.INTERNET" />`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值