当前位置:首页 > 行业动态 > 正文

Android开发中,哪些是常用的代码片段?

在Android开发中,常用的代码包括Activity生命周期方法、Intent的使用、SharedPreferences的存储与读取、网络请求(如使用Retrofit或Volley)、数据库操作(如使用Room或SQLite)、权限请求等。这些是构建Android应用的基础技能。

Android 常用代码

Android开发中,哪些是常用的代码片段?  第1张

Android 开发涉及多个方面,包括界面设计、网络请求、数据存储、传感器使用等,本文将介绍一些常用的 Android 代码片段,帮助开发者快速上手和解决常见问题。

Activity 生命周期

了解 Activity 的生命周期是 Android 开发的基础,以下是一个简单的 Activity 生命周期示例:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化代码
    }
    @Override
    protected void onStart() {
        super.onStart();
        // Activity 变为可见时调用
    }
    @Override
    protected void onResume() {
        super.onResume();
        // Activity 准备好与用户交互时调用
    }
    @Override
    protected void onPause() {
        super.onPause();
        // 系统准备启动或恢复另一个 Activity 时调用
    }
    @Override
    protected void onStop() {
        super.onStop();
        // Activity 不再可见时调用
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // Activity 被销毁前调用
    }
}

权限请求

在 Android 6.0(API 级别 23)及以上版本中,需要在运行时请求敏感权限,以下是请求相机权限的示例:

private static final int REQUEST_CAMERA = 100;
private void requestCameraPermission() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA);
    } else {
        // 权限已被授予,执行相关操作
    }
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == REQUEST_CAMERA) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 权限被授予,执行相关操作
        } else {
            // 权限被拒绝,提示用户或进行其他操作
        }
    }
}

RecyclerView 适配器

RecyclerView 是 Android 中用于显示大量数据的高效视图,以下是一个简单的 RecyclerView 适配器示例:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private List<String> dataList;
    public MyAdapter(List<String> dataList) {
        this.dataList = dataList;
    }
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
        return new MyViewHolder(view);
    }
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.textView.setText(dataList.get(position));
    }
    @Override
    public int getItemCount() {
        return dataList.size();
    }
    static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
        }
    }
}

异步任务(AsyncTask)

AsyncTask 用于在后台线程中执行耗时操作,并在主线程中更新 UI,以下是一个使用 AsyncTask 下载图片的示例:

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    @Override
    protected Bitmap doInBackground(String... urls) {
        return downloadImage(urls[0]);
    }
    @Override
    protected void onPostExecute(Bitmap result) {
        // 更新 UI,例如设置 ImageView 的图片
        imageView.setImageBitmap(result);
    }
    private Bitmap downloadImage(String url) {
        // 实现图片下载逻辑,这里只是示例,返回 null
        return null;
    }
}

5. SharedPreferences 存储数据

SharedPreferences 是 Android 提供的一种轻量级数据存储方式,适用于保存简单的配置信息,以下是使用 SharedPreferences 保存和读取数据的示例:

// 保存数据
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", "JohnDoe");
editor.apply();
// 读取数据
String username = sharedPreferences.getString("username", "defaultUsername");

SQLite 数据库操作

SQLite 是 Android 支持的一种嵌入式关系数据库,以下是使用 SQLiteOpenHelper 创建和管理数据库的示例:

public class MyDatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = "users";
    private static final String COLUMN_ID = "id";
    private static final String COLUMN_NAME = "name";
    private static final String COLUMN_AGE = "age";
    public MyDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + TABLE_NAME + "(" +
                COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                COLUMN_NAME + " TEXT," +
                COLUMN_AGE + " INTEGER)";
        db.execSQL(createTable);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }
}

7. 广播接收器(BroadcastReceiver)

广播接收器用于响应全局广播事件,例如设备启动完成、电池电量低等,以下是一个简单的广播接收器示例:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_POWER_CONNECTED)) {
            // 处理电源连接事件
        } else if (action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
            // 处理电源断开事件
        }
    }
}

要在清单文件中注册广播接收器:

<receiver android:name=".MyBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
    </intent-filter>
</receiver>

服务(Service)

服务用于在后台执行长时间运行的操作,而不需要与用户交互,以下是一个简单的服务示例:

public class MyService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // 服务启动后执行的代码
        return START_STICKY; // 服务被终止后自动重启
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        // 服务销毁前执行的代码
    }
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null; // 此服务不绑定到客户端应用组件
    }
}

要在清单文件中声明服务:

<service android:name=".MyService" />

9. ContentProvider 实现数据共享

ContentProvider 用于在不同应用程序之间共享数据,以下是一个简单的 ContentProvider 示例:

public class MyContentProvider extends ContentProvider {
    @Override
    public boolean onCreate() {
        // 初始化代码,通常用于创建数据库或打开文件等
        return true; // 如果提供程序成功创建返回 true,否则返回 false
    }
    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        // 查询数据并返回 Cursor,这里是示例代码,实际应从数据库或其他数据源获取数据
        return null;
    }
    // 其他方法根据需要实现,如 insert、update、delete 等
}

要在清单文件中声明 ContentProvider:

<provider android:name=".MyContentProvider" android:authorities="com.example.app.provider" />

到此,以上就是小编对于“android常用代码”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

0