gpt4 book ai didi

Android:ListActivity 的正确线程

转载 作者:行者123 更新时间:2023-11-29 14:07:29 26 4
gpt4 key购买 nike

所以,我在这里有我的 onCreate 方法,用于使用用户安装的应用程序填充 ListView。这需要很长时间才能完成,我试图弄清楚在哪里创建一个新线程来完成一些繁重的工作,以便我可以在加载列表时显示 ProgressDialog。这是我的代码:

protected void onCreate(Bundle savedInstanceState) {        
super.onCreate(savedInstanceState);

// Find out which prefs to update
Bundle extras = getIntent().getExtras();
if(extras !=null){
buttonPressed = extras.getString("buttonPressed");
loadNumber = extras.getString("loads");
}

buttonPressedAppName = buttonPressed + "AppName" + loadNumber;
buttonPressedAppPack = buttonPressed + "AppPack" + loadNumber;
humanNamePrefs = buttonPressed + "AppText" + loadNumber;

// Get shared preferences
settings = getSharedPreferences(PREFS_NAME, 0);

// Do in another thread to not slow the UI down...eventually
adapter = createAdapter();
setListAdapter(adapter);
}

public ListAdapter createAdapter() {
namesArray = new String[] { "Loading" };
names = new ArrayList<String>();

PackageManager pm = this.getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
appList = pm.queryIntentActivities(mainIntent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));

// Now, appList contains all of the ResolveInfo stuff

for (int i = 0; i < appList.size(); i++) {
names.add(appList.get(i).loadLabel(pm).toString());
}

namesArray = maker(names);

ListAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, namesArray);
setListAdapter(adapter);
return adapter;
}

我有一个线程处理列表的排序等,但是我的 ProgressDialog 甚至在列表完全填充之前都不会出现,这有点违背了拥有一个进度对话框

简而言之,我的问题是当列表完成填充时,我应该将此线程放在哪里以显示 ProgressDialog

下面回答

@Femi 提供了关于 AsyncTask 的优秀教程,我的 ProgressDialog 在加载应用程序列表期间旋转。谢谢!

链接:http://labs.makemachine.net/2010/05/android-asynctask-example/

最佳答案

推荐的方法是使用 AsyncTask:

  1. 显示进度对话框。
  2. 启动异步任务并在 doInBackground 方法中构建 names ArrayList。
  3. 将数组列表传递给postExecute中的createAdapter方法,然后关闭进度对话框。

关于Android:ListActivity 的正确线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com