一个计时器,将在空闲一段时间后杀死安卓应用程序



我正在开发一项服务,该服务将检查应用程序是否空闲(在后台)一段时间,如果超过给定时间,则杀死该应用程序。另外,如果用户恢复了活动,那么它将重置计时器

问题是,如果我的应用程序中的活动很少,我该如何实现它?并且我找到了一些类似的代码,但是如何调整它以适应我的情况?谢谢。

示例代码:

超时类及其服务

public class Timeout {
    private static final int REQUEST_ID = 0;
    private static final long DEFAULT_TIMEOUT = 5 * 60 * 1000;  // 5 minutes
    private static PendingIntent buildIntent(Context ctx) {
        Intent intent = new Intent(Intents.TIMEOUT);
        PendingIntent sender = PendingIntent.getBroadcast(ctx, REQUEST_ID, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        return sender;
    }
    public static void start(Context ctx) {
        ctx.startService(new Intent(ctx, TimeoutService.class));
        long triggerTime = System.currentTimeMillis() + DEFAULT_TIMEOUT;
        AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
        am.set(AlarmManager.RTC, triggerTime, buildIntent(ctx));
    }
    public static void cancel(Context ctx) {
        AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
        am.cancel(buildIntent(ctx));
        ctx.startService(new Intent(ctx, TimeoutService.class));
    }
}

public class TimeoutService extends Service {
    private BroadcastReceiver mIntentReceiver;
    @Override
    public void onCreate() {
        super.onCreate();
        mIntentReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if ( action.equals(Intents.TIMEOUT) ) {
                    timeout(context);
                }
            }
        };
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intents.TIMEOUT);
        registerReceiver(mIntentReceiver, filter);
    }
    private void timeout(Context context) {
        App.setShutdown();
        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        nm.cancelAll();
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mIntentReceiver);
    }
    public class TimeoutBinder extends Binder {
        public TimeoutService getService() {
            return TimeoutService.this;
        }
    }
    private final IBinder mBinder = new TimeoutBinder();
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
}

杀死应用

android.os.Process.killProcess(android.os.Process.myPid());

您可以使用handler.postDelayed(runnable,time),当您带回您的活动时,您可以调用handler.removeCallbacks(runnable); 取消postDelay

相关内容

  • 没有找到相关文章

最新更新