如何在android中进行线程操作

时间:2011-04-29 08:01:34

标签: android multithreading sd-card

任何人都会给出一个以更简单的方式解释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

3 个答案:

答案 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 fundamentalspainless threading文章及其AsyncTask部分。