Сбой AsyncTask и getInstalledPackages ()

Я не очень понимаю, что происходит, и, может быть, вы можете дать мне идею. Я использую getInstalledPackages (), чтобы получить список всех установленных пользователем приложений и их разрешения. Вот как я это делаю:

private PackageManager pm;

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        pm = getPackageManager();
        getListData();
}

 priv,ate void getListData()
    {

        backTask = new BackTask();
        backTask.execute();
    }

 protected class BackTask extends AsyncTask<Context, String, ArrayList<App>>
    {
....
        @Override
        protected ArrayList<App> doInBackground(Context... param) 
        {

                try {

                      //get a list of installed apps.
                          List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS | PackageManager.GET_PROVIDERS);

                            for (PackageInfo packageInfo : packages) {
                                ApplicationInfo application = packageInfo.applicationInfo;
....
}

Мне нужно обновить список, отображаемый на основе взаимодействия с пользователем. Проблема появляется в этой строке в AsyncTask:

List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS | PackageManager.GET_PROVIDERS);

Иногдапакеты содержит все установленные приложения, иногда бывает пустым. Скажем, например, из 3 раз, 3-й раз пуст. Извлечение этого кода из AsyncTask и помещение его в getListData () работает каждый раз без каких-либо проблем. Проблема в том, что я немного заморозился, потому что операция не в обратном потоке. Так в чем же дело с AsyncTask? Я делаю что-то неправильно ?

Ответы на вопрос(3)

Ваш ответ на вопрос