0

我想在 10 秒后杀死我的应用程序,我想在获得 Kill Action 后启动杀死应用程序的服务。但是这段代码在 10 秒后注意到。为什么?

AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, service_MyService.class);
intent.setAction("Kill");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,intent, 0);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 10);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(),pendingIntent);
4

3 回答 3

0

您可以使用以下方法终止您的活动:

finish();

或者你可以杀死你的应用程序:

System.exit(0);

但两者都不推荐。Android系统不适合这个。Android 操作系统控制杀死应用程序。

更多信息在这里

于 2012-05-25T07:57:05.110 回答
0

这不好,因为 Android 想自己管理应用程序,但你可以这样做。

System.exit(0);
于 2012-05-25T07:51:30.680 回答
0

在您的代码中,您正在发送广播意图

PendingIntent.getBroadcast(this, 0,intent, 0);

它只能启动一个广播接收器而不是一个服务。但是,您使用了正确的意图,因为 AlarmManager 无法唤醒服务,只能唤醒 BroadCastReceiver-s。

您应该创建一个 BroadCastReceiver 而不是服务,并替换此行:

Intent intent = new Intent(this, service_MyService.class);

用这条线

Intent intent = new Intent(this, KillerBroadCastReceiver.class);

然后在您的 KillerBroadCastReceiver 类中杀死该应用程序。

但是,如果您想在一段时间后终止应用程序,更好的解决方案是使用处理程序。这是一个例子:

public class VeryFirstActivity extends Activity {
    Handler mKillerHandler;

    public void onCreate(...) {
        mKillerHandler = new Handler();
        mKillerHandler.postDelayed(new Runnable() {
           public void run() {
               VeryFirstActivity.this.finish();
           }
        }, 10000); // 10 seconds
    }
}
于 2012-05-25T09:41:09.147 回答