0

バックグラウンドでアプリ内で Android サービスを実行しています。このサービスは複数のスレッドを実行します。そのうちの 1 つは 30 分ごとにコマンドを実行するためのものです。

Thread InternetThread = new Thread() {
        public void run() {
            while (true){
                    try {
                        Thread.sleep(1800000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    Log.i("test", "We are running");
                    runCommand();
            }
        }
    };

しかし、私が見つけたのは、このコードが常に 30 分ごとに実行されるとは限らないことです。これは、Android によってパースされているサービスと関係があると思いますか? しかし、これは Android サービスとスレッドに関する私の理解の限界にあるため、よくわかりません。

「runCommand()」が実際に 30 分ごとに正確に実行されるようにする方法を誰かが手伝ってくれることを願っています。

4

1 に答える 1

0

プロセスがフリーズしている可能性があります。次を試してください。

Thread InternetThread = new Thread() {
    public void run() {
        long endtime = 0;
        while (true) {
            endTime = System.currentTimeMillis() + 1800000;
            while(System.currentTimeMillis() < endTime) {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            Log.i("test", "We are running");
            runCommand();
            }
        }
    };
于 2013-06-01T18:56:06.437 に答える