在停止android应用程序后保持CountDownTimer工作

时间:2018-03-29 08:35:12

标签: javascript java android android-studio

你好我是android和java的新手 我需要帮助 !! 在这段代码中,我正在努力在销毁或停止应用程序后保持倒计时工作(android) 即使我停止申请,我也想让手机锁定 你可以看到下面的代码 我知道我需要onStop();方法,但我不知道在里面键入什么 谢谢提前

public class SetTimeActivity extends AppCompatActivity {
    Button set_btn ;
    int min  ;
    EditText setTimerMenu_et;
    TextView tv_display ;
    DevicePolicyManager devicePolicyManager;
    ComponentName componentName;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_time);
        set_btn = (Button)findViewById(R.id.set_btn);
        setTimerMenu_et = (EditText)findViewById(R.id.setTimerMenu_et);

    tv_display = (TextView)findViewById(R.id.tv_display);
    devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    componentName = new ComponentName(SetTimeActivity.this , Controller.class);

    //-------------------------Clicking SET button---------------------------------
    set_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String text = setTimerMenu_et.getText().toString();
            if(!text.equalsIgnoreCase(""));
            int toMin = Integer.valueOf(text);
              min = toMin*60000;


            tv_display.setText("The Phone will lock after: " + text + " minute");
            CountDownTimer countDownTimer = new CountDownTimer(min,10000) {
                @Override
                public void onTick(long ms) {

                }

                @Override
                public void onFinish() {//when the timer end the phone will lock
                    devicePolicyManager.lockNow();
                }
            }.start();

        }
    });
}

}`

3 个答案:

答案 0 :(得分:0)

倒数计时器代码可以写入服务中。在MainActivity中,使用广播接收器从服务接收广播。

答案 1 :(得分:0)

不是将CountDownTimer声明为局部变量,而是将其声明为全局变量并将其设为static

static CountDownTimer countDownTimer;

希望它有效。

答案 2 :(得分:0)

你的设计不正确。活动被销毁后,活动组件不应存在。

更好的选择是使用AlarmManager。安排一个警报,您将收到您在待处理意图中提到的Receiver的回调。

https://developer.android.com/training/scheduling/alarms.html

Android: How to use AlarmManager

或者正如jay2109所提到的,您还可以启动一个服务,该服务将管理CountDownTimer并使用它来广播onTick或onFinished等事件,以备不时之需。 (注意:最佳做法是在您的活动onPause和onResume上附加和分离广播接收器。如果您希望用户知道您的应用程序执行了某些操作,您可以使用通知。

https://developer.android.com/training/run-background-service/create-service.html

send broadcast from Service to Activity?