每当我单击后退/主页按钮时,我的代码的asynctask部分会关闭/停止应用程序

时间:2016-03-09 07:08:23

标签: java android multithreading android-asynctask runnable

任何人都可以帮我解决我的asynctask中的错误吗?我想我知道它为什么会出错,但我不知道如何解决它。非常感谢你。

这是我的asynctask代码(只是想用它来使用surfaceview的操纵杆)

03-09 15:23:52.394    4135-4159/com.example.r.bluetoothsample E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
Process: com.example.r.bluetoothsample, PID: 4135
java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:300)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)
 Caused by: java.lang.NullPointerException
        at com.example.r.bluetoothsample.CustomSurfaceView$MySurfaceThread.doInBackground(CustomSurfaceView.java:182)
        at com.example.r.bluetoothsample.CustomSurfaceView$MySurfaceThread.doInBackground(CustomSurfaceView.java:95)
        at android.os.AsyncTask$2.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)

我可以使用runnable和thread执行相同的任务吗?如果是这样,怎么样?谢谢。

修改

以下是logcat中的错误消息:

interface

1 个答案:

答案 0 :(得分:0)

如果你的表面不可用,那么

lockCanvas()将返回null(我假设它在你离开你的活动时就会变成)。这意味着您在NullPointerException来电时会遇到getWidth()

在旁注中,我希望您在活动的running方法中停止背景循环(可能将false设置为onPause()?) - 否则,它会在后台继续循环,这是不可取的。