После нескольких часов попыток я все еще не могу понять, как включить асинктическую задачу в приведенный ниже код.
Я пробовал многопоточность, которая тоже не работала.Все, что я хочу сделать, это запустить сканирование в фоновом режиме и показать индикатор выполнения.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
private void populateView() {
List<PackageInfo> adPackages = getAdPackages();
PackageManager pm = getPackageManager();
List<Map<String, String>> data = new ArrayList<Map<String, String>>(adPackages.size());
for(PackageInfo pkg : adPackages) {
Map<String, String> attrs = new HashMap<String, String>();
attrs.put("App Name", pm.getApplicationLabel(pkg.applicationInfo).toString());
attrs.put("Package Name", pkg.packageName);
data.add(attrs);
}
String[] from = new String[] {
"App Name",
"Package Name"
};
int[] to = new int[] {
android.R.id.text1,
android.R.id.text2
};
SimpleAdapter adapter = new SimpleAdapter(
this, data, android.R.layout.two_line_list_item, from, to);
setListAdapter(adapter);
mPackages = adPackages;
}
.
private List<PackageInfo> getAdPackages() {
Set<PackageInfo> adPackages = new HashSet<PackageInfo>();
//[...]
List<ApplicationInfo> appInfos = pm.getInstalledApplications(0);
for(ApplicationInfo appInfo : appInfos) {
try {
//[Heavy Stuff]
return new ArrayList<PackageInfo>(adPackages);
}
}