任何人都会给出一个以更简单的方式解释android Threads的示例程序。例如,我想在发布时在线程中列出sd卡中的歌曲
我正在使用以下代码来获取Android设备的SD卡中的歌曲数量。从此我想列出线程中的歌曲
private void init_phone_sd_card()
{
System.gc();
final String[] proj = { MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.SIZE };
Log.e("media",""+proj);
musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, null);
Log.e("media1",""+musiccursor);
count = musiccursor.getCount();
Log.e("media2",""+count);
怎么做......
THX
答案 0 :(得分:1)
将代码放到AsyncTask的doInBackground()方法中。任务还应该显示ProgressDialog,以告诉用户正在运行一些有用的工作。请参阅this文章。
答案 1 :(得分:1)
如果您要求进行简单的线程操作,this will help你......
或者您可能希望使用如下所示的Async类,
class AddStringTask extends AsyncTask<Void, String, Void> {
@Override
protected Void doInBackground(Void... unused) {
for (String item : items) {
publishProgress(item);
SystemClock.sleep(1000);
}
return(null);
}
@Override
protected void onProgressUpdate(String... item) {
((ArrayAdapter)getListAdapter()).add(item[0]);
}
@Override
protected void onPostExecute(Void unused) {
Toast
.makeText(Async.this,
"Done",
Toast.LENGTH_SHORT)
.show();
}
}
答案 2 :(得分:0)
您需要更简单的解释。比什么更简单?
查看Android Process and Thread fundamentals和painless threading文章及其AsyncTask
部分。