我们如何防止服务被操作系统杀死?

50

我在我的应用程序中使用 Service,它需要一直运行到我的应用程序卸载,但问题是它会被操作系统杀掉。

我们如何防止它被操作系统杀掉?或者,如果它被杀掉了,我们能否通过编程重启该服务?

11个回答

-4
请尝试以下操作:
final Messenger mMessenger = new Messenger(new IncomingHandler()); 
class IncomingHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            default:
                super.handleMessage(msg);
            }
        }
}

@Override
public void onCreate() {
    super.onCreate();
    makeServiceForeground();
}


@Override
public IBinder onBind(Intent arg0) {
    return mMessenger.getBinder();
}


private void makeServiceForeground() {
    IActivityManager am = ActivityManagerNative.getDefault();
    try {
        am.setProcessForeground(onBind(null), android.os.Process.myPid(), true);
    } catch (RemoteException e) {
        Log.e("", "cant set to foreground" + e.toString());
    }
}

还需要在 manifest.xml 文件中添加。

<uses-permission android:name="android.permission.SET_PROCESS_LIMIT"/>

是的)) 但是针对系统应用程序。 - m0narX
2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接