如果我杀死应用程序进程,AlarmManager不会触发警报

时间:2018-03-21 15:47:17

标签: android widget android-widget alarmmanager android-alarms

我使用此代码启动闹钟:

IDLE_CPU=1
NCPU=$(nproc)

int_childs() {
    trap - INT
    while IFS=$'\n' read -r pid; do
        kill -s SIGINT -$pid
    done < <(jobs -p -r)
    kill -s SIGINT -$$
}

# cmds is array that hold commands
# the complex thing is display which will handle all cmd output
# and serialized it correctly

trap int_childs INT
{
    exec 2>&1
    set -m

    if [ $NCPU -gt $IDLE_CPU ]; then
        for cmd in "${cmds[@]}"; do
            $cmd &
            while [ $(jobs -pr |wc -l) -ge $((NCPU - IDLE_CPU)) ]; do
                wait -n
            done
        done
        wait

    else
        for cmd in "${cmds[@]}"; do
            $cmd
        done
    fi
} | display

如果我终止应用程序进程,警报就不再被触发了。为什么?不应该假设,如果你创建一个重复的警报,它将重复,直到无限?

我有哪些替代品可以继续重复工作,即使应用程序进程已被用户或系统杀死?我有一个小部件,即使应用程序被杀,我也必须更新。

由于

0 个答案:

没有答案