【问题标题】:How to close the app at specific hour using TimePicker如何使用 TimePicker 在特定时间关闭应用程序
【发布时间】:2015-03-13 03:37:53
【问题描述】:

我正在开发一个应用程序,我想为用户提供使用时间选择器在选定时间自动关闭应用程序的选项。我知道我必须使用警报管理器,但我不知道如何与 timepicker 结合并用它关闭应用程序

             @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contadorpro);


    timePicker = (TimePicker) findViewById(R.id.timePicker);
    button = (Button)findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Contador Activado", Toast.LENGTH_LONG).show();
            timePicker.clearFocus();
            final Calendar _calendar = Calendar.getInstance();
            final int hour = timePicker.getCurrentHour();
            final int minute = timePicker.getCurrentMinute();

            Thread _thread = new Thread() {

                @Override
                public void run() {

                    try {

                        Calendar _calendar = Calendar.getInstance();
                        int _currentHour = _calendar.get(Calendar.HOUR);
                        int _currentMinute = _calendar.get(Calendar.MINUTE);

                        if(_currentHour == hour && _currentMinute == minute){

                            System.exit(0);

                        }

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                }

            };

            _thread.start();

        }
    });



}   

}

【问题讨论】:

  • 到目前为止你做了什么?
  • Alarm Manager Example的可能重复
  • 不一样,我必须使用警报管理器,但要使用时间选择器,我需要用它关闭应用程序

标签: android timepicker forceclose


【解决方案1】:

您可以使用

获取时间
int hour = timePicker.getCurrentHour();
int minute = timePicker.getCurrentMinute();

然后你必须创建一个线程来检查当前时间和来自TimePicker的时间。

当时,您必须使用 System.exit(0);finish() 您的活动关闭应用程序

重新编辑:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contadorpro);

    timePicker = (TimePicker) findViewById(R.id.timePicker);
    button = (Button)findViewById(R.id.button);

    final Thread _thread = new Thread() {

        @Override
        public void run() {

            try {

                boolean _stopThread = true;

                while (_stopThread) {

                    Calendar _calendar = Calendar.getInstance();

                    int _currentHour = _calendar.get(Calendar.HOUR);
                    int _currentMinute = _calendar.get(Calendar.MINUTE);

                    int hour = timePicker.getCurrentHour();
                    int minute = timePicker.getCurrentMinute();

                    if (_currentHour == hour && _currentMinute == minute) {

                        _stopThread = false;

                        System.exit(0);

                    }

                }

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    };

    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            // I edited here
            if(!_thread.isAlive()) {

                _thread.start();

                Toast.makeText(getApplicationContext(), "Contador Activado", Toast.LENGTH_LONG).show();

            }

        }
    });

}

【讨论】:

  • 非常感谢列侬,它终于可以工作了 ;) 一位同事告诉我一个代码,表明线程不是一直在运行,当我得到它并测试它时,我会编辑
  • 很高兴为您提供帮助:D。因此,请为正在寻找类似内容的人提供此答案。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多