为什么我的程序按返回键可以正常退出,采用finish()就异常? 异常线程intent 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看 什么样的异常, 调用 finish() 出现的 崩溃日志 贴下 觉得应该是你的线程做了什么操作致使,看下finsh后的logcat吧,,, 第一问题,interrupt只是改变了线程的中断状态,不会立刻中断一个正在运行的线程。如果调用了interrupt后,线程进入阻塞时,显示就会抛出异常退出。第二问题,onBackPressed()方法相当于点击back按钮。 谢谢各位!这个是error:07-31 11:30:37.390: E/Posix(16040): [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory07-31 11:30:51.318: E/AndroidRuntime(16040): FATAL EXCEPTION: main07-31 11:30:51.318: E/AndroidRuntime(16040): java.lang.RuntimeException: Unable to pause activity {com.zhushisoft/com.zhushisoft.MainActivity}: java.lang.NullPointerException07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2861)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2813)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2791)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.access$800(ActivityThread.java:134)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1254)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.os.Handler.dispatchMessage(Handler.java:99)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.os.Looper.loop(Looper.java:154)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.main(ActivityThread.java:4624)07-31 11:30:51.318: E/AndroidRuntime(16040): at java.lang.reflect.Method.invokeNative(Native Method)07-31 11:30:51.318: E/AndroidRuntime(16040): at java.lang.reflect.Method.invoke(Method.java:511)07-31 11:30:51.318: E/AndroidRuntime(16040): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)07-31 11:30:51.318: E/AndroidRuntime(16040): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)07-31 11:30:51.318: E/AndroidRuntime(16040): at dalvik.system.NativeStart.main(Native Method)07-31 11:30:51.318: E/AndroidRuntime(16040): Caused by: java.lang.NullPointerException07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.platform.comapi.map.e.onPause(Unknown Source)07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.mapapi.map.MapView.onPause(Unknown Source)07-31 11:30:51.318: E/AndroidRuntime(16040): at com.zhushisoft.MainActivity.onPause(MainActivity.java:955)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.Activity.performPause(Activity.java:4577)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1201)07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2844)07-31 11:30:51.318: E/AndroidRuntime(16040): ... 12 more后来发现退回键也不灵。现在觉得是不是线程还没有完全中断?我在使用intent跳转时发现有两种情况:一是两个Activity都有线程,跳过去之后再跳回来或再跳另一个,采用intent的方式或finish()的方式都出错;上面是再跳另一个的错误信息;二是第一个有,第二个没有,跳过去第二个能正常返回,但再跳一次就异常中断了!这个问题困惑了我很久,请帮忙分析一下是什么情况,应该如何处理,谢谢! 这个是第一个有线程,第二个没有线程,跳过去第一次能正常返回,第二次跳过去中途出错了!07-31 11:37:22.553: E/Posix(16532): [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory07-31 11:37:25.870: E/AndroidRuntime(16532): FATAL EXCEPTION: main07-31 11:37:25.870: E/AndroidRuntime(16532): java.lang.RuntimeException: Unable to destroy activity {com.zhushisoft/com.zhushisoft.Mysetting}: java.lang.NullPointerException07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3271)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3289)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.access$1200(ActivityThread.java:134)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.os.Handler.dispatchMessage(Handler.java:99)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.os.Looper.loop(Looper.java:154)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.main(ActivityThread.java:4624)07-31 11:37:25.870: E/AndroidRuntime(16532): at java.lang.reflect.Method.invokeNative(Native Method)07-31 11:37:25.870: E/AndroidRuntime(16532): at java.lang.reflect.Method.invoke(Method.java:511)07-31 11:37:25.870: E/AndroidRuntime(16532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)07-31 11:37:25.870: E/AndroidRuntime(16532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)07-31 11:37:25.870: E/AndroidRuntime(16532): at dalvik.system.NativeStart.main(Native Method)07-31 11:37:25.870: E/AndroidRuntime(16532): Caused by: java.lang.NullPointerException07-31 11:37:25.870: E/AndroidRuntime(16532): at com.zhushisoft.Mysetting.onDestroy(Mysetting.java:435)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.Activity.performDestroy(Activity.java:4643)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1081)07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3258)07-31 11:37:25.870: E/AndroidRuntime(16532): ... 11 more这个问题困惑了我很久,请帮忙分析一下是什么情况,应该如何处理,谢谢! 第一个 : 百度地图报了 空指针 , 是不是 你把 百度地图用的 数据 置空 了 看看 07-31 11:30:51.318: E/AndroidRuntime(16040): Caused by: java.lang.NullPointerException07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.platform.comapi.map.e.onPause(Unknown Source)07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.mapapi.map.MapView.onPause(Unknown Source)07-31 11:30:51.318: E/AndroidRuntime(16040): at com.zhushisoft.MainActivity.onPause(MainActivity.java:955)第二个 : 空指针啊, 找出这个位置的代码 看看 怎么成为 null 了07-31 11:37:25.870: E/AndroidRuntime(16532): Caused by: java.lang.NullPointerException07-31 11:37:25.870: E/AndroidRuntime(16532): at com.zhushisoft.Mysetting.onDestroy(Mysetting.java:435) 非常感谢!让我对线程有了一点点初步的理解。第一个问题已解决,是不愉当的摧毁了地图;第二个问题,仔细查看了下,跳过来的Acitivity中内部方法中有一个线程,当满足条件时才启用, protected void onDestroy() { BackMusic.stop(this); if ( t_save!= null) { if( t_save.isAlive()){t_save.interrupt();t_save=null;}//是否激活 } android.os.Process.killProcess(android.os.Process.myPid()) ; //获取PID System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出 super.onDestroy(); }还是报错啊!!!报错信息不知是什么?07-31 16:00:04.278: E/Posix(621): [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory请问这种情况如何处理? 请问退出一个Activity时应如何安全的处理该Activity中的线程?谢谢! 请问退出一个Activity时应如何安全的处理该Activity中的线程?谢谢!线程可以关闭啊~在finish()之前关闭。或者如果不是执行下载大文件的任务可以用AsyncTask。但一定要用线程的话,执行完Handler+Message发送完消息没有其他事情干的话就可以关闭线程了 不是说用.stop()不安全吗?我在中断线程时,发现用interrupt,再次进去后线程还在运行;用stop()后返回第一个Activity,再次跳过去第二个Activity出错,而且在error中没出信息。 我用了很多停止线程的办法都没法解决这个问题,后来仔细看了下LOG:我原来对于Activity的finish()的理解,关闭了,里边的BMP对象不是自己释放的吗,我第一次跳过来没问题,关闭后再跳过来一次,怎么会内存溢出呢? android 2.3 使用cmwap联网的时候超慢 我的android应用程序发布到哪个网上 android如何实现重绘 F1帮助系统如何建立? Jpush能不能实现按地区来进行推送? android 动态tablelayout 布局对某一列的监听 android关于html5 Listview给每条item设置背景 'com.neenbedankt.android-apt' not found. 同样的代码怎么获取不了权限了? android访问本地SQLServer数据库 NDK环境下 从/assets 获取文件
第二问题,onBackPressed()方法相当于点击back按钮。
这个是error:
07-31 11:30:37.390: E/Posix(16040): [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory
07-31 11:30:51.318: E/AndroidRuntime(16040): FATAL EXCEPTION: main
07-31 11:30:51.318: E/AndroidRuntime(16040): java.lang.RuntimeException: Unable to pause activity {com.zhushisoft/com.zhushisoft.MainActivity}: java.lang.NullPointerException
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2861)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2813)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2791)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.access$800(ActivityThread.java:134)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1254)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.os.Handler.dispatchMessage(Handler.java:99)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.os.Looper.loop(Looper.java:154)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.main(ActivityThread.java:4624)
07-31 11:30:51.318: E/AndroidRuntime(16040): at java.lang.reflect.Method.invokeNative(Native Method)
07-31 11:30:51.318: E/AndroidRuntime(16040): at java.lang.reflect.Method.invoke(Method.java:511)
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
07-31 11:30:51.318: E/AndroidRuntime(16040): at dalvik.system.NativeStart.main(Native Method)
07-31 11:30:51.318: E/AndroidRuntime(16040): Caused by: java.lang.NullPointerException
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.platform.comapi.map.e.onPause(Unknown Source)
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.mapapi.map.MapView.onPause(Unknown Source)
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.zhushisoft.MainActivity.onPause(MainActivity.java:955)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.Activity.performPause(Activity.java:4577)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1201)
07-31 11:30:51.318: E/AndroidRuntime(16040): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2844)
07-31 11:30:51.318: E/AndroidRuntime(16040): ... 12 more后来发现退回键也不灵。现在觉得是不是线程还没有完全中断?
我在使用intent跳转时发现有两种情况:
一是两个Activity都有线程,跳过去之后再跳回来或再跳另一个,采用intent的方式或finish()的方式都出错;上面是再跳另一个的错误信息;
二是第一个有,第二个没有,跳过去第二个能正常返回,但再跳一次就异常中断了!
这个问题困惑了我很久,请帮忙分析一下是什么情况,应该如何处理,谢谢!
07-31 11:37:22.553: E/Posix(16532): [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory
07-31 11:37:25.870: E/AndroidRuntime(16532): FATAL EXCEPTION: main
07-31 11:37:25.870: E/AndroidRuntime(16532): java.lang.RuntimeException: Unable to destroy activity {com.zhushisoft/com.zhushisoft.Mysetting}: java.lang.NullPointerException
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3271)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3289)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.access$1200(ActivityThread.java:134)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.os.Handler.dispatchMessage(Handler.java:99)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.os.Looper.loop(Looper.java:154)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.main(ActivityThread.java:4624)
07-31 11:37:25.870: E/AndroidRuntime(16532): at java.lang.reflect.Method.invokeNative(Native Method)
07-31 11:37:25.870: E/AndroidRuntime(16532): at java.lang.reflect.Method.invoke(Method.java:511)
07-31 11:37:25.870: E/AndroidRuntime(16532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
07-31 11:37:25.870: E/AndroidRuntime(16532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
07-31 11:37:25.870: E/AndroidRuntime(16532): at dalvik.system.NativeStart.main(Native Method)
07-31 11:37:25.870: E/AndroidRuntime(16532): Caused by: java.lang.NullPointerException
07-31 11:37:25.870: E/AndroidRuntime(16532): at com.zhushisoft.Mysetting.onDestroy(Mysetting.java:435)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.Activity.performDestroy(Activity.java:4643)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1081)
07-31 11:37:25.870: E/AndroidRuntime(16532): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3258)
07-31 11:37:25.870: E/AndroidRuntime(16532): ... 11 more
这个问题困惑了我很久,请帮忙分析一下是什么情况,应该如何处理,谢谢!
07-31 11:30:51.318: E/AndroidRuntime(16040): Caused by: java.lang.NullPointerException
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.platform.comapi.map.e.onPause(Unknown Source)
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.baidu.mapapi.map.MapView.onPause(Unknown Source)
07-31 11:30:51.318: E/AndroidRuntime(16040): at com.zhushisoft.MainActivity.onPause(MainActivity.java:955)
第二个 : 空指针啊, 找出这个位置的代码 看看 怎么成为 null 了
07-31 11:37:25.870: E/AndroidRuntime(16532): Caused by: java.lang.NullPointerException
07-31 11:37:25.870: E/AndroidRuntime(16532): at com.zhushisoft.Mysetting.onDestroy(Mysetting.java:435)
第一个问题已解决,是不愉当的摧毁了地图;
第二个问题,仔细查看了下,跳过来的Acitivity中内部方法中有一个线程,当满足条件时才启用,
protected void onDestroy() {
BackMusic.stop(this);
if ( t_save!= null)
{
if( t_save.isAlive()){t_save.interrupt();t_save=null;}//是否激活
}
android.os.Process.killProcess(android.os.Process.myPid()) ; //获取PID
System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出
super.onDestroy();
}
还是报错啊!!!
报错信息不知是什么?
07-31 16:00:04.278: E/Posix(621): [CDS]Libcore_io_Posix-throwErrnoException, functionName: access; errno: No such file or directory
请问这种情况如何处理?
我在中断线程时,发现用interrupt,再次进去后线程还在运行;
用stop()后返回第一个Activity,再次跳过去第二个Activity出错,而且在error中没出信息。
我原来对于Activity的finish()的理解,关闭了,里边的BMP对象不是自己释放的吗,我第一次跳过来没问题,关闭后再跳过来一次,怎么会内存溢出呢?