좋아, 여기 내 문제가 있습니다. 장기 실행 작업을 처리하기 위해 AsyncTask, 스레딩 및 처리기를 배우고 싶습니다. Android 쿡 북 및 New Boston Android 튜토리얼을 사용했지만 제대로 작동하지 않습니다.장기 실행 프로세스를 처리하기 위해 Android 스레딩
진행률 표시 줄 메시지를 변경해야합니다. 이것은 프로젝트를위한 것이 아니라 스레딩을 배우는 것입니다. 스레딩은 정말 어렵습니다. 따라서 스레딩을 이해하는 데 도움이되는 안내서 또는 가이드가 있다면 알려주십시오.
한편 Handler 클래스를 시도했지만 작동하지 않았습니다. 그래서 AsyncTask를 시도했다. 그러나 그것도 작동하지 않습니다.
여기 내 코드입니다.
package com.example.androidpopup;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
Button click_btn;
ProgressDialog dialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
click_btn = (Button) findViewById(R.id.button1);
click_btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
dialog = ProgressDialog.show(MainActivity.this, "",
"Recording...", true);
dialog.setCancelable(true);
Thread thread = new Thread(){
public void run(){
try{
sleep(2000);
new UpdateUI().execute("testing");
}catch(InterruptedException e){
e.printStackTrace();
}
}
};
}
});
}
public class UpdateUI extends AsyncTask<String, Integer, String>{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
return "Searching";
}
protected void onPreExecute(String f){
//example of setting up something
f = "whatever";
}
protected void onProgressUpdate(Integer...progress){
}
protected void onPostExecute(String result){
dialog.setMessage(result);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
내 접근 방식의 문제점을 누구든지 설명 할 수 있다면 정말 도움이 될 것입니다.
감사합니다.
어떻게 작동하지 않습니까? 더 설명하기 쉽도록하십시오. – JoxTraex
메시지를 변경하지 않습니다. 나는 디버그 코드를 삽입하는 방법을 모른다. –
Thread에서 파생 된 클래스를 정의해야합니까 (클래스 MyThread가 Thread를 확장합니까)? Thread.start() 호출이 어딘가에 있지 않아야합니까? –