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