避免在主线程中进行耗时操作,例如从应用程序中查询已安装的应用程序名称。可以使用AsyncTask在后台线程中进行查询,以避免ANR。示例代码如下:
private class GetInstalledAppsTask extends AsyncTask
@Override
protected List doInBackground(Void... params) {
PackageManager pm = getPackageManager();
List apps = pm.getInstalledApplications(0);
List appNames = new ArrayList();
for (ApplicationInfo app : apps) {
appNames.add(app.loadLabel(pm).toString());
}
return appNames;
}
@Override
protected void onPostExecute(List appNames) {
// Update UI with app names
}
}
// To execute the task: new GetInstalledAppsTask().execute();