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

2025-04-17 15:59:50
推荐回答(2个)
回答(1):

实现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);  
    }  
}

回答(2):

添加加通知栏、不要退出,可以做到。。。。服务较好