杀死申请

时间:2012-05-25 07:11:50

标签: android alarmmanager

我想在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);

3 个答案:

答案 0 :(得分:0)

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

System.exit(0);

答案 1 :(得分:0)

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

finish();

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

System.exit(0);

但两者都没有建议。 Android系统不适合这个。 Android操作系统控制可以杀死应用程序。

更多信息是here

答案 2 :(得分:0)

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

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

哪个只能启动BroadCastReceiver而不是服务。但是,您正在使用正确的意图,因为AlarmManager无法唤醒服务,只能使用BroadCastReceiver-s。

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

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

这一行

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

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

但是如果你想在一段时间后杀死应用程序,更好的解决方案是使用Handler。这是一个例子:

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
    }
}