Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务不';在倒计时中不能正常工作_Java_Android_Service_Countdowntimer - Fatal编程技术网

Java 服务不';在倒计时中不能正常工作

Java 服务不';在倒计时中不能正常工作,java,android,service,countdowntimer,Java,Android,Service,Countdowntimer,我正在创建一个使用倒计时的应用程序。 我想使用一个服务方法在后台正确地运行倒计时 但是,在我的代码实现中,它不能正常工作 服务未在Toast中显示文本,并且可能未正确地向活动发送意图。 我应该在MyService类中使用这个倒计时代码吗? 有人能帮我吗 这是MainActivity.java 这是MyService.java 为什么您对服务类中的super方法进行了注释?你在哪里开始服务?您的代码中没有调用startService。因为我认为这个方法应该返回一个整数值,而STICKY命令应该这样

我正在创建一个使用倒计时的应用程序。 我想使用一个服务方法在后台正确地运行倒计时

但是,在我的代码实现中,它不能正常工作

服务未在Toast中显示文本,并且可能未正确地向活动发送意图。 我应该在MyService类中使用这个倒计时代码吗? 有人能帮我吗

这是MainActivity.java

这是MyService.java


为什么您对服务类中的
super
方法进行了注释?你在哪里开始服务?您的代码中没有调用startService。因为我认为这个方法应该返回一个整数值,而STICKY命令应该这样做。startService在MainActivity中被调用(几乎在行尾)@Vyacheslav我更改了这个,现在返回这个超级方法。首先,在这种情况下始终使用超级方法。我更改了这个。但现在,它只显示了一个祝酒词,但我不知道为什么当我关闭这个应用程序,进入“运行应用程序”时,它关闭了。在清单中我有:然而,在我点击后退按钮后,这个计时器仍然不工作。当我回来时,它是计时器的重新启动。@gryzek,倒计时计时器不工作,因为你在活动中启动了它。尝试在inside Service.onCreated方法中启动。感谢您的帮助。但主要的第二个问题是为什么它在后台不起作用。问题仍然悬而未决。我应该在内部启动什么?当我把这段代码从MainActivity(onCreate)放到MyService(onCreate)上时,需要复制所有定时器类->如public-antersass等@gryzek,我不倒计时管理,但如果它们在后台工作(移动设备的电池寿命节省模式),所有长期的定时器都会被杀死。使用
startForeground
AlarmManager
来防止这种情况。
public class MainActivity extends ActionBarActivity {

    Button btnStart, btnStop;
    TextView textViewTime;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnStart = (Button) findViewById(R.id.btnStart);
        btnStop = (Button) findViewById(R.id.btnStop);
        textViewTime = (TextView) findViewById(R.id.textViewTime);

        textViewTime.setText("00:01:30");

        final CounterClass timer = new CounterClass(90000, 1000);
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                timer.start();
            }
        });

        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                timer.cancel();
            }
        });
        }

    public class CounterClass extends CountDownTimer {

        public CounterClass(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            long millis = millisUntilFinished;
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
                    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            System.out.println(hms);
            textViewTime.setText(hms);

        }

        @Override
        public void onFinish() {
            textViewTime.setText("Completed.");
        }
    }

    public void startService(View view)
    {
        Intent intent = new Intent(this,MyService.class);
        startService(intent);
    }

    public void stopService(View view)
    {
        Intent intent = new Intent(this,MyService.class);
        stopService(intent);
    }


}
public class MyService extends Service {



    @Override
    public void onCreate() { // initial performance (setup service in this method)
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {  // create start a service

        Toast.makeText(this,"Service Started...",Toast.LENGTH_LONG).show();



        return START_STICKY;
        //return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {  // stop a service

        Toast.makeText(this,"Service Destroyed...", Toast.LENGTH_LONG).show();

        //super.onDestroy();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {  
        return null;
    }
}
 btnStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
startService(v);
            timer.start();
        }
    });

    btnStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
stopService(v);
            timer.cancel();
        }
    });
    }