0
내 앱이 네트워크에 많이 의존하기 때문에 앱을 끊지 않아야합니다. 그래서 내가AsyncTask 내에서 Looper.prepare()를 호출하지 않은 스레드 내부에서 핸들러를 만들 수 없습니다.
- MainActvity이 두 번째 활동을 확장해야 Asyncask
를 사용하려고
- AsyncTask를 MainActivity에서 내부 클래스로서
- 두 번째 활동
주요 활동 및 비동기 작업 :
01 23,889,두 번째 활동 :
public class SecondActivity extends Activity {
public void setConnection() {
//My stuffs
}
public void getID(TextView txtUserName) {
// here i'm calling another function inside package
if (isSession()) {
Log.d(TAG, "sessionValid");
mAsyncRunner.request("me", new IDRequestListener());
} else {
// no logged in, so relogin
Log.d(TAG, "sessionNOTValid, relogin");
mFacebook.authorize(this, PERMS, new LoginDialogListener());
}
}
/////////////// Code continues.....}
이 코드에서 오류가 무엇, 내가이
내가 오류가 아래지고있어 해결하는 데 도움을 주시기 바랍니다
08-15 11:01:07.211: WARN/System.err(462): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
08-15 11:01:07.251: WARN/System.err(462): at android.os.Handler.<init>(Handler.java:121)
08-15 11:01:07.251: WARN/System.err(462): at android.app.Dialog.<init>(Dialog.java:101)
08-15 11:01:07.271: WARN/System.err(462): at android.app.Dialog.<init>(Dialog.java:123)
08-15 11:01:07.271: WARN/System.err(462): at com.facebook.android.FbDialog.<init>(FbDialog.java:63)
08-15 11:01:07.281: WARN/System.err(462): at com.facebook.android.Facebook.dialog(Facebook.java:622)
08-15 11:01:07.291: WARN/System.err(462): at com.facebook.android.Facebook.startDialogAuth(Facebook.java:297)
08-15 11:01:07.301: WARN/System.err(462): at com.facebook.android.Facebook.authorize(Facebook.java:195)
08-15 11:01:07.311: WARN/System.err(462): at com.facebook.android.Facebook.authorize(Facebook.java:114)
08-15 11:01:07.321: WARN/System.err(462): at com.singleupdater.FacebookActivity.getID(FacebookActivity.java:61)
08-15 11:01:07.331: WARN/System.err(462): at com.singleupdater.SingleStausUpdater$postToTwitter.doInBackground(SingleStausUpdater.java:149)
08-15 11:01:07.341: WARN/System.err(462): at com.singleupdater.SingleStausUpdater$postToTwitter.doInBackground(SingleStausUpdater.java:1)
08-15 11:01:07.351: WARN/System.err(462): at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-15 11:01:07.361: WARN/System.err(462): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-15 11:01:07.371: WARN/System.err(462): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-15 11:01:07.371: WARN/System.err(462): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-15 11:01:07.391: WARN/System.err(462): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-15 11:01:07.391: WARN/System.err(462): at java.lang.Thread.run(Thread.java:1096)
답장 보내 주셔서 감사합니다. onPreExecute()/onPostExecute 메서드를 호출하면 별도의 스레드에서 실행되거나 UI 스레드가 실행됩니까? – shanmugam
이 두 메서드는 UI 스레드에서 실행되므로 작업 결과 (예 :'TextView' 등 설정) 만 적용됩니다. 웹 서비스 통신 및 계산과 같은 모든 무거운 작업은 UI를 고정시키지 않는 백그라운드 스레드이기 때문에'doInBackground'에서 여전히 수행되어야합니다. – ernazm
나중에 볼 수 있습니다. 그래서 비동기 작업 내에서 두 번째 활동에서 모든 계산을 가져와야한다고 말하는 것입니까? – shanmugam