Java Android:线程停止工作

Java Android:线程停止工作,java,android,Java,Android,它从通道读取图像并将其写入卡。卡片上的图像写得很完整,很好。唯一的问题是线程处于挂起状态,并且在循环之后不执行任何行 protected Bitmap doInBackground(String... arg0) { // TODO Auto-generated method stub' // Runtime.getRuntime().availableProcessors(); System.out.println("Inside doinback"+ Remote

它从通道读取图像并将其写入卡。卡片上的图像写得很完整,很好。唯一的问题是线程处于挂起状态,并且在循环之后不执行任何行

protected Bitmap doInBackground(String... arg0) {
    // TODO Auto-generated method stub'
      // Runtime.getRuntime().availableProcessors();
    System.out.println("Inside doinback"+ RemoteScreen.out.toString());
        try {
            RemoteScreen.out.write(210);
            //Home.threadloop = false;  
             Bitmap bitmap = null;  
            String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
            String fileName = "a.png";
            String imageInSD = baseDir + File.separator + fileName; 
                System.out.println(imageInSD);
            if (is!= null) {
                FileOutputStream fos = null;
                BufferedOutputStream bos = null;
                try {
                    // Log.i("IMSERVICE", "FILERECCC-1");
                    //ContextWrapper context = null;
                    fos = new FileOutputStream(imageInSD);   
                    bos = new BufferedOutputStream(fos);

                    byte[] aByte = new byte[1024]; 
                    int bytesRead;  
                    //thread stuck in this loop and does not move forward 
                    while ( (bytesRead = is.read(aByte)) > 0  ) {
                        if (bytesRead == 1)
                            break; 
                        bos.write(aByte, 0, bytesRead);  
                   System.out.println("Loop"+aByte); 

                    }   

                   bos.close();

                Log.i("IMSERVICE", "out of loop");     
                    java.io.FileInputStream in = new FileInputStream(imageInSD);
               bitmap = BitmapFactory.decodeStream(in);
                  bitmap = BitmapFactory.decodeFile(imageInSD); 

            Log.i("IMSERVICE", "saved");
                if (bitmap != null) 
                    System.out.println(bitmap.toString());

                } catch (IOException ex) {    
                    // Do exception handling      
             //     Log.i("IMSERVICE", "exception ");
                }
            }
             publishProgress(b);   
             b = null; 
             ch = 4646;

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



     return null;
}
日志跟踪显示以下错误

   05-10 20:34:42.715: E/AndroidRuntime(1135): FATAL EXCEPTION: AsyncTask #3
  05-10 20:34:42.715: E/AndroidRuntime(1135): java.lang.RuntimeException: An error occured while executing doInBackground()
  05-10 20:34:42.715: E/AndroidRuntime(1135):   at android.os.AsyncTask$3.done(AsyncTask.java:299)
    05-10 20:34:42.715: E/AndroidRuntime(1135):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
   05-10 20:34:42.715: E/AndroidRuntime(1135):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
    05-10 20:34:42.715: E/AndroidRuntime(1135):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
    05-10 20:34:42.715: E/AndroidRuntime(1135):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
  05-10 20:34:42.715: E/AndroidRuntime(1135):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
 05-10 20:34:42.715: E/AndroidRuntime(1135):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
 05-10 20:34:42.715: E/AndroidRuntime(1135):    at java.lang.Thread.run(Thread.java:856)
 05-10 20:34:42.715: E/AndroidRuntime(1135): Caused by: java.lang.NullPointerException
 05-10 20:34:42.715: E/AndroidRuntime(1135):    at com.rms.remotedesktop1.screencahnge.doInBackground(screencahnge.java:43)
 05-10 20:34:42.715: E/AndroidRuntime(1135):    at com.rms.remotedesktop1.screencahnge.doInBackground(screencahnge.java:1)
 05-10 20:34:42.715: E/AndroidRuntime(1135):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
 05-10 20:34:42.715: E/AndroidRuntime(1135):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)

根据logcat,代码在第43行崩溃,出现空指针异常,我无法判断哪一行是第43行。然而:

  • 您是否已检查
    环境.getExternalStorageDirectory().getAbsolutePath()
    是否返回非
    null
    ?可能是因为没有外部存储目录,或者您没有了解它的权限
  • 同样值得一读的是开发者页面,其中指出您不应该写入该目录,而您似乎正在这样做

根据logcat,代码在第43行崩溃,出现空指针异常,我无法分辨哪一行是第43行。然而:

  • 您是否已检查
    环境.getExternalStorageDirectory().getAbsolutePath()
    是否返回非
    null
    ?可能是因为没有外部存储目录,或者您没有了解它的权限
  • 同样值得一读的是开发者页面,其中指出您不应该写入该目录,而您似乎正在这样做

    • 我自己解决了这个问题。由于代码中的逻辑错误,正在更改其值的静态变量出错。

      我自己解决了这个问题。由于代码中的逻辑错误,正在更改其值的静态变量出错。

      您有写入权限吗?现在发布整个stacktracecheck,这可能会被清除。你能澄清一下屏幕上哪一行是第43行吗?这就是崩溃发生的地方。RemoteScreen.out.write(210);第43行是否有写入权限?现在发布整个stacktracecheck,这可能会被清除。你能澄清一下屏幕上哪一行是第43行吗?这就是崩溃发生的地方。RemoteScreen.out.write(210);是第43行吗?它在RemoteScreen.out.write(210)中有问题,但我现在已经解决了onPollAlarm期间的错误问题:java.lang.IllegalStateException:解析统计数据的问题:java.io.FileNotFoundException:/proc/net/xt\u qtaguid/iface\u stat\u all:open失败:enoint(没有这样的文件或目录)在RemoteScreen.out.write(210)中没有问题但我现在已经解决了onPollAlarm期间出现的错误问题:java.lang.IllegalStateException:解析stats时出现的问题:java.io.FileNotFoundException:/proc/net/xt\u qtaguid/iface\u stat\u all:open失败:enoint(没有这样的文件或目录)