9

私はAndroidを初めて使用しますが、servicesについてはあまり詳しくありません。UIを備えたアクティビティクラスがあります。戻るボタンをクリックすると、このアクティビティクラスをバックグラウンドで実行したいと思います。私の活動をサービスのようにバックグラウンドで実行させる方法、plzは私を助けます。

4

4 に答える 4

5

あなたは本当にActivityバックグラウンドで実行することはできません!アクティビティがフォアグラウンドにない場合、アクティビティはそれに到達し、システムはメソッドonStopによってリソースを解放するためにアクティビティを終了できます。アクティビティライフサイクルonDestroyを参照してください

バックグラウンドで実行するには、Serviceまたはを作成する必要がありますIntentService

ここここのサービスについてのandroidjavadocをチェックアウトするか、IntentService

これがサードパーティのAndroidサービスチュートリアルです

編集:あなたがそれを乗り越えることができるようにあなたはまたあなたのサービスとあなたの活動の間のコミュニケーションを必要とするかもしれません:例:メッセージングを使った活動とサービスの間のコミュニケーション

于 2013-03-25T17:21:21.723 に答える
4

アクティビティを逆方向に実行したいだけの場合は、を使用してみてください

moveTaskToBack(true);
于 2013-03-25T18:43:46.600 に答える
0

終了時にバックグラウンドでアクティビティを実行したいようです。ただし、フォアグラウンドにない限り、アクティビティを実行することはできません。

目的を達成するには、onPause()で、アクティビティの作業を続行するサービスを開始する必要があります。戻るボタンをクリックすると、onPause()が呼び出されます。onPauseで、現在の状態を保存し、ジョブをサービスに転送するだけです。アクティビティがフォアグラウンドでない場合、サービスはバックグラウンドで実行されます。

後でアクティビティに戻ったら、onResume()で何かを実行して、サービスのジョブをアクティビティに再度転送します。

于 2013-03-25T17:27:16.107 に答える
-2

スレッドに関する開発者ガイドを読む必要があります:http://developer.android.com/guide/components/processes-and-threads.html

具体的には、関数doInBackground()ページの例:

public void onClick(View v) {
    new DownloadImageTask().execute("http://example.com/image.png");
}

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    /** The system calls this to perform work in a worker thread and
      * delivers it the parameters given to AsyncTask.execute() */
    protected Bitmap doInBackground(String... urls) {
    return loadImageFromNetwork(urls[0]);
}

    /** The system calls this to perform work in the UI thread and delivers
      * the result from doInBackground() */
    protected void onPostExecute(Bitmap result) {
        mImageView.setImageBitmap(result);
    }
}
于 2013-03-25T17:14:02.477 に答える