Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为我的意图服务_Android_Multithreading_Intentservice_Android Anr Dialog - Fatal编程技术网

Android 为我的意图服务

Android 为我的意图服务,android,multithreading,intentservice,android-anr-dialog,Android,Multithreading,Intentservice,Android Anr Dialog,我有一个IntentService,它创建一个新线程并运行一个长操作 @Override protected void onHandleIntent(Intent intent) { Log.d(TAG, "onHandleIntent at " + Calendar.getInstance().getTime()); new Thread() { public void run() { Pr

我有一个IntentService,它创建一个新线程并运行一个长操作

    @Override
    protected void onHandleIntent(Intent intent) {
        Log.d(TAG, "onHandleIntent at " + Calendar.getInstance().getTime());
        new Thread() {
            public void run() {
                Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
                            << A VERY LONG OPERATION == NETWORK + FILESYSTEM etc >>
                };
        }.start();
    }
此外,位于/data/anr/traces.txt的跟踪文件不显示此服务的任何线程堆栈。我只能看到主线程的堆栈(正在播放视频)和其他异步任务线程。 顺便问一下,主线程是否正在忙于设置数据源以创建ANR的后台线程? 欢迎任何指导

以下是主线程和刷新线程的堆栈跟踪:

堆栈跟踪:

DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x40b06460 self=0x12958
  | sysTid=1248 nice=0 sched=0/0 cgrp=default handle=1074144680
  | schedstat=( 0 0 0 ) utm=100 stm=30 core=0
  at android.media.MediaPlayer._setDataSource(Native Method)
  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:884)
  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:846)
  at android.widget.VideoView.openVideo(VideoView.java:275)
  at android.widget.VideoView.access$2100(VideoView.java:49)
  at android.widget.VideoView$6.surfaceCreated(VideoView.java:520)
  at android.view.SurfaceView.updateWindow(SurfaceView.java:597)
  at android.view.SurfaceView.access$000(SurfaceView.java:86)
  at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:174)
  at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1617)
  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:4424)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:511)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  at dalvik.system.NativeStart.main(Native Method)

"Thread-158" prio=5 tid=20 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x411a38a8 self=0x25af28
  | sysTid=1301 nice=0 sched=0/0 cgrp=default handle=1661840
  | schedstat=( 0 0 0 ) utm=1 stm=3 core=0
  at libcore.io.Posix.recvfromBytes(Native Method)
  at libcore.io.Posix.recvfrom(Posix.java:131)
  at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
  at libcore.io.IoBridge.recvfrom(IoBridge.java:503)
  at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
  at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
  at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
  at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
  at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
  at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
  at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
  at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
  at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
  at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
  at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
  at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
  at x.y.z.c.a.b(SourceFile:597)
  at x.y.z.c.a.a(SourceFile:529)
  at x.y.z.c.a.a(SourceFile:214)
  at x.y.z.c.i.e(SourceFile:290)
  at x.y.z.services.a.run(SourceFile:43)

我用While(真的)操纵了它,它工作得很好,
从启动服务的日志中,尝试共享其他代码详细信息。

是否将活动绑定到服务? 如果是这样,请确保只绑定一次。 如果您多次绑定到它,它在完成其工作时不会停止,这可能会导致您的ANR:


请参阅:

我的是一个IntentService,我通过AlarmManger作为PendingEvent启动它。我一点也不绑定。不是真的,我在onHandleIntent之后创建了一个线程。我已将stacktrace附加到我的帖子中。是否您的线程正在访问相同的对象?或者您正试图在非UI工作线程上执行UI操作?是的,我的线程可能访问相同的对象。但这有关系吗?我以为我们只能访问UI对象。我们也不会用同步锁定任何对象。不仅仅是UI。。。例如,如果您正在访问和修改一个数组,该怎么办?在这种情况下,你需要保护那个物体
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x40b06460 self=0x12958
  | sysTid=1248 nice=0 sched=0/0 cgrp=default handle=1074144680
  | schedstat=( 0 0 0 ) utm=100 stm=30 core=0
  at android.media.MediaPlayer._setDataSource(Native Method)
  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:884)
  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:846)
  at android.widget.VideoView.openVideo(VideoView.java:275)
  at android.widget.VideoView.access$2100(VideoView.java:49)
  at android.widget.VideoView$6.surfaceCreated(VideoView.java:520)
  at android.view.SurfaceView.updateWindow(SurfaceView.java:597)
  at android.view.SurfaceView.access$000(SurfaceView.java:86)
  at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:174)
  at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1617)
  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:4424)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:511)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  at dalvik.system.NativeStart.main(Native Method)

"Thread-158" prio=5 tid=20 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x411a38a8 self=0x25af28
  | sysTid=1301 nice=0 sched=0/0 cgrp=default handle=1661840
  | schedstat=( 0 0 0 ) utm=1 stm=3 core=0
  at libcore.io.Posix.recvfromBytes(Native Method)
  at libcore.io.Posix.recvfrom(Posix.java:131)
  at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
  at libcore.io.IoBridge.recvfrom(IoBridge.java:503)
  at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
  at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
  at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
  at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
  at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
  at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
  at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
  at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
  at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
  at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
  at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
  at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
  at x.y.z.c.a.b(SourceFile:597)
  at x.y.z.c.a.a(SourceFile:529)
  at x.y.z.c.a.a(SourceFile:214)
  at x.y.z.c.i.e(SourceFile:290)
  at x.y.z.services.a.run(SourceFile:43)