如何限制Android应用程序只运行一段时间?

时间:2016-04-01 18:10:35

标签: java android

我想创建一个运行特定时间间隔的应用程序。

[已编辑] 按特定时间间隔,我的意思是用户从Play商店下载应用程序。 他可以查看所有功能和功能固定的时间段,只说X小时。之后,我们可以设置任何类型的限制(任何UI /导航限制,以便用户无法查看功能)。

[问题]

最简单,最有效的方法是什么?就像我不认为这些解决方案可行:

Calendar c = Calendar.getInstance(); 
int seconds = c.get(Calendar.SECOND);

或者

Time now = new Time();
now.setToNow();

放置限制的最佳方式是什么(应用程序端或服务器端,正如我在某些游戏应用程序中看到的那样,在服务器和应用程序之间进行同步,以便用户不能简单地更改时间和访问功能)。

2 个答案:

答案 0 :(得分:1)

因此,如果您想在第一次运行中运行您的应用程序一段时间,则需要保留第一次运行的跟踪。因此,您可以设置一个首选项变量,以便它可以告诉您它是否是第一次运行。

现在设置CountDownTimer并将其设置为运行一小时,当计时器结束时,通过调用finish()来关闭活动。

SharedPreferences pref = getSharedPreferences("ApplicationTag", Activity.MODE_PRIVATE);

if (pref.contains("FIRST_LAUNCH")){
    finish(); // As you want, it can't be used if the application launches second time.  

} else {
    // Set the first launch flag to true. 
    pref.edit.putBoolean("FIRST_LAUNCH", true).commit();

    // Start the count down timer
    new CountDownTimer(3600000, 1000) {

    public void onTick(long millisRemaining) {
        // Do nothing
    }

    public void onFinish() {
        // Finish the Activity
        finish();
    }

}.start();

所以你可能会想,如果我在活动之间切换会怎样。因此,在这种情况下,您创建一个BaseActivity类,该类将由您的应用程序中的其他活动进行扩展。将CountDownTimer代码放在那里,并参考您所在的Context,然后在计时器结束时调用context.finish()

因此,如果您不想限制首次启动的用户,则需要在应用程序中以某种方式节省时间。 Activity完成后,您将在onDestroy函数中获得回调。因此,覆盖onDestroy函数并再次设置一些首选项,剩余时间为mili秒。这样您就可以在应用程序启动时再次初始化计时器。

希望有所帮助!

答案 1 :(得分:0)

尝试设置警报,以便在您需要任何时间后触发任何活动。如下:

calendar = Calendar.getInstance();
Intent intent = new Intent(this, ActivityYouWantToStart.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 101, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
calendar.add(Calendar.Hour,1);
alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);

当用户第一次启动您的代码时,请调用此代码,并在ActivityYouWantToStart.class内部执行您想要在这么长时间后执行的任何操作。