android 应用退出时,虚拟机退出了吗

问题描述

android 应用退出时,虚拟机退出了吗

网上有文章说道:(1)线程分为daemon线程和user线程。主线程是user线程,通常新创建的线程会从创建它们的线程中继承daemon状态。user线程创建的线程都是user线程。如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。
(2) Activity不能够管理线程,当Activity退出后,线程依然在运行
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
Log.v(tag, "VM Exit!");
}
可以查看虚拟机是否退出。
我创建了一个Activity,在onCreate方法开始开启了一个新线程循环播放音乐。
(1)该线程非daemon线程。即使按下back键,退出Activity,该线程不是应该继续运行的么,为什么音乐停止播放了呢?该线程还在运行吗?
(2)我把该线程设置成daemon线程,按下back键退出Activity的时候,没有存在user线程,不是应该 Log.v(tag, "VM Exit!");会打印出来么,但是却没有。
(3)当主动调用System.exit(0),Log.v(tag, "VM Exit!");打印出来了。
(4)调用这句话的时候android.os.Process.killProcess(android.os.Process.myPid());也没打印log信息出来。

解决方案

anddroid应用程序不是运行在虚拟机上的吗,这个虚拟机就像手机,你程序退出了,难道手机你就不用了吗?

如果是服务的话,你按back的话音乐是还可以继续播放的;不过这个播放是在后台的;
可能你的理解走向了误区了

如果回答对您有帮助,请采纳。

解决方案二:

不管线程非daemon线程还是daemon线程。对于Activity而言,按下back键,退出Activity时会调用调用onPause()->onStop()->onDestory()这三个方法。也就说应用程序已经结束了,已经不存在什么线程了。建议用Service来做音乐播放器。

解决方案三:

这个应用的进程存在,虚拟机就应该存在

时间: 2024-09-15 16:14:21

android 应用退出时,虚拟机退出了吗的相关文章

android 当后台程序全部退出后 重新打开软件时 如何进行软件更新提示

问题描述 android 当后台程序全部退出后 重新打开软件时 如何进行软件更新提示 android 当软件第一次被打开时会进行版本检测 弹出新版本更新提示对话框 点击cancel暂不升级 会在sharedpreferences中set一个boolean值为false(一开始默认为true) 当后台程序全部退出后 重新打开软件时 这个boolean值貌似还是false 这个情况如何进行软件更新提示 这个值怎么设 或者换一种方法也可以 解决方案 你为什么要通过sharedpreferences中的

Android实现退出时关闭所有Activity的方法_Android

本文示例实现了Android退出时关闭所有Activity的功能,分享给大家供大家参考之用.具体方法如下: 一般来说,在Android退出时,有的Activity可能没有被关闭.为了在Android退出时关闭所有的Activity,这里给出了以下的类: //关闭Activity的类 public class CloseActivityClass{ public static List<Activity> activityList = new ArrayList<Activity>(

android-为何Android实现按back退出时要这样判断

问题描述 为何Android实现按back退出时要这样判断 f (event.getAction()==KeyEvent.ACTION_DOWN&&event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 为何要&&ACTION_DOWN??一个判断居然不行 解决方案 因为一次点击包括up和down事件啊

Android实现退出时关闭所有Activity的方法

本文示例实现了Android退出时关闭所有Activity的功能,分享给大家供大家参考之用.具体方法如下: 一般来说,在Android退出时,有的Activity可能没有被关闭.为了在Android退出时关闭所有的Activity,这里给出了以下的类: //关闭Activity的类 public class CloseActivityClass{ public static List<Activity> activityList = new ArrayList<Activity>(

Android编程实现捕获程序异常退出时的错误log信息功能详解

本文实例讲述了Android编程实现捕获程序异常退出时的错误log信息功能.分享给大家供大家参考,具体如下: 很多时候我们程序无缘无故的就挂掉了,让我们一头雾水,如果刚好我们在调试,那我们可以通过错误log来查看是什么原因引起的程序崩溃.但是当我们把程序发别人使用时,就没那么好运了,那我们要怎么样才能捕获到那个错误异常呢?还好Android给我们提供了UncaughtExceptionHandler 这个类,我们可以通过实现这个类的接口,来全局捕获那个让程序崩掉的错误log信息.可以将错误的lo

android-Android按home键退出程序后,再进入程序,还是退出时的页面,请问这是怎么做到的?

问题描述 Android按home键退出程序后,再进入程序,还是退出时的页面,请问这是怎么做到的? Android按home键退出程序后,再进入程序,还是退出时的页面.请问这是怎么做到的? 解决方案 Android生命周期 > 首先, 你要先了解下有关activity的生命周期方法的调用顺序,自己可以写一下demo,打一些log输出. 要尝试,你按下home后, 都执行了什么声明周期方法. 关于数据缓存 > 这里我没有写过相似的代码, 不过可以给你提些思路,相信,你也看到onCreate方法有

android-Android 开发在程序退出时的操作应该放在哪处理

问题描述 Android 开发在程序退出时的操作应该放在哪处理 目前有个android项目,在apk退出时要做一些向网络上报数据,之前我是放在主activity的ondestroy方法里的,后来发现当用户按home键,之后apk被系统kill的时候,是不会调用ondestroy的,这样我的上报处理就不会做了.请问这种处理应该怎么做,别说放在onstop里,我有多个activity,主activity跳转的时候就会onstop了,我是想apk整个退出时做处理,谢谢! 解决方案 没找到可行的方案,系

excel文档退出时不提示保存是怎么了?

  excel文档退出时不提示保存是怎么了?          我的excel2007出了问题,文件编辑后,退出时不提示"保存",在网上搜了一下,有人询问相同的excel 问题,很多回答都是说更改"保存自动恢复信息时间间隔",或者重装office,没有其他修复这个问题的有效答案,最后在微软帮助网站http://support.microsoft.com/kb/213513/zh-cn里找到2个解决办法,一是按CTRL + S 保存更改,然后关闭该工作簿,这种办法可以

页面退出时提示用户

页面 page_unload当服务器控件从内存中卸载时发生,不是关闭窗口 还是需要用客户端的事件 关闭时的方法:function window.onunload(){   alert("窗体关闭了!");}如果需要在关闭前给用户关闭提示,而且想在用户点击浏览器关闭按钮关闭时,也只有用以下的方法才能在退出时,执行事件: function window.onbeforeunload()   {       if( event.clientX>document.body.clientW