请问,如何使安卓软件中的Activity在后台以及关闭屏幕后能继续运行?

如题,请问,如何使安卓软件中的Activity在后台以及关闭屏幕后能继续运行?由于是修改一个源代码,源代码中以Activity方式访问该类比较多,所以不适改成Servic... 如题,请问,如何使安卓软件中的Activity在后台以及关闭屏幕后能继续运行?

由于是修改一个源代码,源代码中以Activity方式访问该类比较多,所以不适改成Service(说要改成Service的方案就算了,不切实际)。
在改Activity类的“protected void onPause()”方法中把“super.onPause();”去掉是可以后台运行,但是5秒左右会弹出错误提示,用LogCat看到“android.app.SuperNotCalledException”,原因是“did not call through to super.onPause()”,也就是说必须执行“super.onPause();”,才不会出错,但是这个错误提示只要一直留着不关掉,软件是可以一直后台运行的(音乐一直正常播放)。
由此可以推测,安卓Activity是可以后台的,只要不执行“super.onPause();”就行,只不过系统等待超时(5秒左右)后会强制结束进程。

还有去掉“super.onPause();”后,在关闭屏幕后,估计软件也会出错,但是只要不开屏幕就没事(音乐一样能正常播放),但是只要一开屏幕软件就会直接消失,连错误提示都没有。

请问我该怎么修改,才能使安卓Activity在后台(切换到其它应用或者返回桌面时)能够正常运行,以及关闭屏幕后也能够正常运行?不胜感激!!
(附:该Activity的加载方式:先“new Intent”,然后对Intent用“putExtra”设置一些信息进去,最后用“startActivityForResult”来启动)
展开
 我来答
帐号已注销
2015-08-24 · TA获得超过4.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:77%
帮助的人:2162万
展开全部

实现activity后台运行有两种方法:

方法一:

添加下列代码即可:

Intent intent = new Intent(Intent.ACTION_MAIN);  
intent.addCategory(Intent.CATEGORY_HOME);  
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
startActivity(intent);

方法二:

此方法其实不是主要是屏蔽Keycode_Back,让它不结束(finish())Activity,直接显示HOME界面。

PackageManager pm = getPackageManager();  
                              ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN)  
.addCategory(Intent.CATEGORY_HOME), 0);
public boolean onKeyDown(int keyCode, KeyEvent event) {  
    if (keyCode == KeyEvent.KEYCODE_BACK) {  
        ActivityInfo ai = homeInfo.activityInfo;  
        Intent startIntent = new Intent(Intent.ACTION_MAIN);  
        startIntent.addCategory(Intent.CATEGORY_LAUNCHER);  
        startIntent.setComponent(new ComponentName(ai.packageName,  
                ai.name));  
        startActivitySafely(startIntent);  
        return true;  
    } else  
        return super.onKeyDown(keyCode, event);  
}
void startActivitySafely(Intent intent) {  
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    try {  
        startActivity(intent);  
    } catch (ActivityNotFoundException e) {  
        Toast.makeText(this, R.string.unabletoopensoftware,  
                Toast.LENGTH_SHORT).show();  
    } catch (SecurityException e) {  
        Toast.makeText(this, R.string.unabletoopensoftware,  
                Toast.LENGTH_SHORT).show();  
        Log  
                .e(  
                        TAG,  
                        "Launcher does not have the permission to launch "  
                                + intent  
                                + ". Make sure to create a MAIN intent-filter for the corresponding activity "  
                                + "or use the exported attribute for this activity.",  
                        e);  
    }  
}
匿名用户
2015-02-09
展开全部
添加加通知栏、不要退出,可以做到。。。。服务较好
更多追问追答
追问
请问能不能给一下具体的实现方法?我需要的是能在切换到其他应用或者返回桌面的时候该Activity还能后台播放音乐,而该Activity只能是Activity,不能改成Server的情况下。
追答
楼主,Activity +  service   。。。。。。。。。。。。不是server
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式