That doesn't seem to have much useful info. The original message looks
like it's related to the handler and the ui thread. I'm not entirely
sure what is happening. It almost seems like you are constructing a
Handler from a non-ui thread, but I didn't see where you do that in
the code.
On Apr 1, 12:55 am, Rader <[EMAIL PROTECTED]> wrote:
> Here is the log after I click the cancel button:
>
> DEBUG/dalvikvm(1299): Exception Ljava/lang/RuntimeException; from
> Handler.java:94 not caught locally
> WARN/dalvikvm(1299): threadid=15: thread exiting with uncaught
> exception (group=0x4000fdf8)
> ERROR/AndroidRuntime(1299): Uncaught handler: thread Thread-8 exiting
> due to uncaught exception
> ERROR/AndroidRuntime(1299): java.lang.RuntimeException: Can't create
> handler inside thread that has not called Looper.prepare()
> ERROR/AndroidRuntime(1299): at
> android.os.Handler.<init>(Handler.java:94)
> ERROR/AndroidRuntime(1299): at
> android.widget.Toast.<init>(Toast.java:348)
> ERROR/AndroidRuntime(1299): at
> android.widget.Toast.makeText(Toast.java:209)
> ERROR/AndroidRuntime(1299): at ciente.cl.AsyncLoadingMgrSample
> $LoadingTask2.run(AsyncLoadingMgrSample.java:146)
> ERROR/AndroidRuntime(1299): at java.lang.Thread.run(Thread.java:
> 896)
> INFO/Process(508): Sending signal. PID: 1299 SIG: 3
> INFO/dalvikvm(1299): threadid=7: reacting to signal 3
> INFO/dalvikvm(1299): DALVIK THREADS:
> INFO/dalvikvm(1299): "Main" prio=5 tid=3 RUNNABLE
> INFO/dalvikvm(1299): | group="main" sCount=1 dsCount=0 s=1
> obj=0x40010450
> INFO/dalvikvm(1299): | sysTid=496 nice=0 sched=0/0
> handle=-1096934148
> INFO/dalvikvm(1299): at java.lang.Thread.interrupt(Thread.java:~747)
> INFO/dalvikvm(1299): at ciente.cl.AsyncLoadingMgrSample
> $1$1.onCancel(AsyncLoadingMgrSample.java:72)
> INFO/dalvikvm(1299): at android.app.Dialog
> $1.handleMessage(Dialog.java:508)
> INFO/dalvikvm(1299): at
> android.os.Handler.dispatchMessage(Handler.java:80)
> INFO/dalvikvm(1299): at android.os.Looper.loop(Looper.java:91)
> INFO/dalvikvm(1299): at
> android.app.ActivityThread.main(ActivityThread.java:3052)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): at java.lang.reflect.Method.invokeNative(Native
> Method)
> INFO/dalvikvm(1299): at java.lang.reflect.Method.invoke(Method.java:
> 356)
> INFO/dalvikvm(1299): at android.os.ZygoteInit
> $MethodAndArgsCaller.run(ZygoteInit.java:1547)
> INFO/dalvikvm(1299): at android.os.ZygoteInit.main(ZygoteInit.java:
> 1445)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): at android.dalvik.NativeStart.main(Native
> Method)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): "Thread-8" prio=5 tid=15 NATIVE
> INFO/dalvikvm(1299): | group="main" sCount=1 dsCount=0 s=0
> obj=0x40060a90
> INFO/dalvikvm(1299): | sysTid=1357 nice=0 sched=0/0 handle=1346432
> INFO/dalvikvm(1299): at android.os.BinderProxy.transact(Native
> Method)
> INFO/dalvikvm(1299): at
> android.app.ActivityManagerProxy.handleApplicationError(ActivityManagerNative.java:
> 1441)
> INFO/dalvikvm(1299): at
> android.os.RuntimeInit.crash(RuntimeInit.java:250)
> INFO/dalvikvm(1299): at android.os.RuntimeInit
> $UncaughtHandler.uncaughtException(RuntimeInit.java:56)
> INFO/dalvikvm(1299): at
> java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:853)
> INFO/dalvikvm(1299): at
> java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:850)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): "Binder Thread #2" prio=5 tid=13 NATIVE
> INFO/dalvikvm(1299): | group="main" sCount=1 dsCount=0 s=0
> obj=0x40021c38
> INFO/dalvikvm(1299): | sysTid=1312 nice=-10 sched=0/0 handle=1320328
> INFO/dalvikvm(1299): at android.dalvik.NativeStart.run(Native
> Method)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): "Binder Thread #1" prio=5 tid=11 NATIVE
> INFO/dalvikvm(1299): | group="main" sCount=1 dsCount=0 s=0
> obj=0x40020438
> INFO/dalvikvm(1299): | sysTid=1311 nice=-15 sched=0/0 handle=1317024
> INFO/dalvikvm(1299): at android.dalvik.NativeStart.run(Native
> Method)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): "JDWP" daemon prio=5 tid=9 VMWAIT
> INFO/dalvikvm(1299): | group="system" sCount=1 dsCount=0 s=0
> obj=0x400b4530
> INFO/dalvikvm(1299): | sysTid=1302 nice=0 sched=0/0 handle=1313496
> INFO/dalvikvm(1299): at android.dalvik.NativeStart.run(Native
> Method)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): "Signal Catcher" daemon prio=5 tid=7 RUNNABLE
> INFO/dalvikvm(1299): | group="system" sCount=0 dsCount=0 s=0
> obj=0x400b1e90
> INFO/dalvikvm(1299): | sysTid=1301 nice=0 sched=0/0 handle=1302384
> INFO/dalvikvm(1299): at android.dalvik.NativeStart.run(Native
> Method)
> INFO/dalvikvm(1299): (break frame)
> INFO/dalvikvm(1299): "HeapWorker" daemon prio=5 tid=5 VMWAIT
> INFO/dalvikvm(1299): | group="system" sCount=1 dsCount=0 s=0
> obj=0x400b0670
> INFO/dalvikvm(1299): | sysTid=1300 nice=0 sched=0/0 handle=1299784
> INFO/dalvikvm(1299): at android.dalvik.NativeStart.run(Native
> Method)
> INFO/dalvikvm(1299): (break frame)
> INFO/CancelLoadingTask:Run(1299): loading task interruptted
> VERBOSE/Toast(1299): SHOW: [EMAIL PROTECTED]
> VERBOSE/Toast(1299): HANDLE SHOW: [EMAIL PROTECTED]
> showing=false
> VERBOSE/Toast(1299): ADD! [EMAIL PROTECTED] in
> [EMAIL PROTECTED]
> VERBOSE/Toast(1299): HIDE: [EMAIL PROTECTED]
> VERBOSE/Toast(1299): HANDLE HIDE: [EMAIL PROTECTED]
> showing=true
> VERBOSE/Toast(1299): REMOVE! [EMAIL PROTECTED] in
> [EMAIL PROTECTED]
>
> On Apr 1, 3:02 pm, "Dan U." <[EMAIL PROTECTED]> wrote:
>
> > Do you have a line number for this exception (Should be in logcat).
> > I'd guess maybe it's the Toast show() call needing to be executed in a
> > handler.
>
> > On Mar 31, 11:15 pm, Rader <[EMAIL PROTECTED]> wrote:
>
> > > What i want to do is starting a new thread when i click a button and
> > > this new thread will do some long-time tasks. A loading dialog will be
> > > shown before that thread starts and will be hidden when the thread
> > > ends.If i wait until the thread finishes its job and ends normally,
> > > everything will be OK. But if i cancel the loading dialog and
> > > "interrupt" the thread in the cancel event handler of that dialog, an
> > > UnCaughtExcetpion will be thrown.
>
> > > Quote:
> > > Can't create handler inside the thread that has not called
> > > Looper.prepare()
>
> > > Full code: AsyncLoadingMgrSample .java
>
> > > Java:
>
> > > package ciente.cl;
>
> > > import java.util.concurrent.Callable;
> > > import java.util.concurrent.CompletionService;
> > > import java.util.concurrent.Executor;
> > > import java.util.concurrent.ExecutorCompletionService;
> > > import java.util.concurrent.FutureTask;
>
> > > import android.app.Activity;
> > > import android.app.ProgressDialog;
> > > import android.content.DialogInterface;
> > > import android.content.DialogInterface.OnCancelListener;
> > > import android.os.Bundle;
> > > import android.os.Handler;
> > > import android.util.Log;
> > > import android.view.View;
> > > import android.view.View.OnClickListener;
> > > import android.widget.Button;
> > > import android.widget.EditText;
> > > import android.widget.Toast;
>
> > > /**
> > > * @author rader
> > > *
> > > */
> > > public class AsyncLoadingMgrSample extends Activity {
>
> > > private final AsyncLoadingMgr mgr=new AsyncLoadingMgr(this);
> > > protected Runnable cancelLoding;
> > > protected FutureTask<?> loading;;
> > > ProgressDialog mProgDlg;
>
> > > final public FinishlLoadingTask finishLoadingTask=new
> > > FinishlLoadingTask();
>
> > > /** Called when the activity is first created. */
> > > @Override
> > > public void onCreate(Bundle icicle) {
> > > super.onCreate(icicle);
> > > setContentView(R.layout.asyncloadingmgrsample);
>
> > > // loading=new FutureTask<String>(new LoadingTask(this));
> > > // cancelLoding=new CancelLoadingTask();
>
> > > final Handler handler=new Handler();
>
> > > Button btnAsyncLoad=(Button)findViewById(R.id.btnAsyncLoad);
> > > btnAsyncLoad.setOnClickListener(new OnClickListener(){
>
> > > @Override
> > > public void onClick(View arg0){
> > > EditText
> > > txt=(EditText)findViewById(R.id.txtAsyncLoad);
>
> > > // Executor
> > > executor=java.util.concurrent.Executors.newFixedThreadPool(1);
> > > // CompletionService<String> completionService =
> > > // new
> > > ExecutorCompletionService<String>(executor);
> > > txt.setText("start task...");
> > > try {
> > > // Callable task=new LoadingTask(handler);
> > > final Thread loadingThread=new Thread(new
> > > LoadingTask2(handler));
> > > loadingThread.start();
>
> > > mProgDlg =
> > > ProgressDialog.show(AsyncLoadingMgrSample.this, null,
> > > "Please wait while loading...",
> > > true, true);
> > > mProgDlg.setCancelListener(new
> > > OnCancelListener(){
>
> > > @Override
> > > public void onCancel(DialogInterface
> > > arg0) {
> > > loadingThread.interrupt();
>
> > > // while(!
> > > loadingThread.isInterrupted()){
> > > //
> > > // }
>
> > > Toast.makeText(AsyncLoadingMgrSample.this,"loading task
> > > interruptted",Toast.LENGTH_LONG).show();
>
> > > Log.i("CancelLoadingTask:Run","loading task interruptted");
> > > EditText
> > > txt=(EditText)findViewById(R.id.txtAsyncLoad);
> > > txt.setText("loading task
> > > interruptted");
>
> > > }
>
> > > });
> > > // completionService.submit(task);
> > > txt.setText("wait for the task ending....");
> > > } catch (Exception e) {
> > > // TODO Auto-generated catch block
> > > e.printStackTrace();
>
> ...
>
> read more ยป
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---