2

次のコードを想定します。

public class MyApplication extends Application {

    @Override
    public void onCreate()
    {
        super.onCreate();
        getApplicationContext().startService(new Intent(getApplicationContext(), MyService.class););
    }
}

public class MyService extends IntentService {

    private Handler mLoadContactsHandler;

    public MyService() {
        super(MyService.class.getName());
        myHandler = new Handler();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

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

    @Override
    protected void onHandleIntent(Intent intent)
    {    
        int delay = intent.getIntExtra("delay", 1000 * 60 * 5);
        myHandler.postDelayed(updateTask, delay);
    }

    private Runnable updateTask = new Runnable() {
        public void run() {

            Thread thread = new Thread()
            {
                public void run()
                {
                    ... some task ...
                }
            };
            thread.start();

            myHandler.postDelayed(this, 1000*60*15);
        }
    };
}

アプリを終了しても、このサービスは実行され続けますか?(戻るボタンを使用してアプリを閉じるときと同じように終了します)

つまり、サービスが実際に終了することはありません。アプリがシャットダウンされた場合、どうすればサービスを終了できますか。もちろん、やっていることを終わらせたいです。

編集。アプリが実行されている限り、サービスをその間隔で実行し続けたい。

4

2 に答える 2

0
Would this service keep running even if I exit the app? (Exit as in closing the app using back-button)<p>

はい、アンドロイドがそれを殺さない限り、それは実行され続けます。これは 1 日に数回行われます。

How can I make the service quit if the app has been shut down. Of course, I would like it to finish what it's doing.<p>

私の知る限り、アクティビティ/サービスがいつ破棄されるかはわかりますが、アプリがいつ破棄されるかはわかりません(Androidがアプリケーションをメモリ内に保持するのが好きなため、固定時間はありません)。したがって、 stopSelf();スレッドの run() メソッドの最後の行として呼び出すことをお勧めします。スレッドが手元のタスクを終了した後、サービスを停止します。

public void run()
                {
                  //  ... some task ...

                stopSelf();
                }
于 2012-08-28T15:28:25.357 に答える
0

代わりにIntentServiceを使用して、Android システムがそれを管理するようにします (完了時にサービスを停止するなど)。

于 2012-08-28T11:52:57.867 に答える