Android

AsyncTask 결과값 리턴 받는 방법

안드로이드 AsyncTask 결과 리턴 받는 방법

저장소를 읽고 쓰려면 다음 권한을 AndroidManifest.xml 파일에 추가해야합니다.

<manifest ...>
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	...
</manifest> 

안드로이드 마시멜로우 (api 23)부터는 권한 체크 모듈을 추가해야합니다.

작업실행 후 get()메소드를 사용하면 된다.

String rtnStr="";
try {

//파일 1개 일때 처리
    FileSearchAsyncTask task = new FileSearchAsyncTask(MainActivity.this);
    rtnStr = task.execute().get();
    Log.d("TAG", "FileSearchAsyncTask rtnStr : [" + rtnStr + "]");

}catch(Exception e){
    e.printStackTrace();
    return "";
}
public class FileSearchAsyncTask extends AsyncTask<Object, Integer, String> {
    ProgressDialog asyncDialog;
    private Context context;

    public FileSearchAsyncTask(Context context) {
this.context = context;
    }

@Override
    protected void onPreExecute() { //작업시작
        super.onPreExecute();
        asyncDialog = new ProgressDialog(context, ProgressDialog.THEME_HOLO_DARK);
        //asyncDialog = new ProgressDialog(context, android.R.style.Theme_Holo);


        asyncDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //막대형태의 ProgressDialog 스타일 설정
        //asyncDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        asyncDialog.setMessage(context.getResources().getString(R.string.txt_39));
        asyncDialog.setCancelable(false);
        asyncDialog.setCanceledOnTouchOutside(false); //ProgressDialog가 진행되는 동안 dialog의 바깥쪽을 눌러 종료하는 것을 금지

        // show dialog
        asyncDialog.show();



    }

@Override
    protected String doInBackground(Object... objects) {
try {
            File dir = Environment.getExternalStorageDirectory();

            Queue<File> directoryFileList = new LinkedList<>();
            ArrayList<File> inFiles = new ArrayList<File>();
            String findFileName= "";
            directoryFileList.addAll(Arrays.asList(dir.listFiles()));
            while (!directoryFileList.isEmpty()) {
                File file = directoryFileList.remove();
                if (file.isDirectory()) {
                    directoryFileList.addAll(Arrays.asList(file.listFiles()));
                }

                else {
                    if (file.getName().startsWith(BAK_FILE_NAME)) {
                        String tempPath = file.getParent() + File.separator + DB_BAK_FILE_NAME;
                        findFileName = tempPath;
                        break;
                    }
                }
             }
            return findFileName;
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }

    }

@Override
    protected void onPostExecute(String marketVersion) {
super.onPostExecute(marketVersion);
        if (asyncDialog != null && asyncDialog.isShowing()) {
asyncDialog.dismiss();
        }

asyncDialog = null;    

    }

}

Leave a Reply

error: Content is protected !!