2010-12-29 12 views
5

非常に簡単な非GUIアクションを実行する非常に簡単なアプリケーションを作成しようとしています。画面上に既に存在していたもの、例えばホーム画面)の上に表示され、終了する。それで全部です。アクティビティのGUIを完全に取り除く方法(黒い画面を避ける)

これはほとんど機能しますが、アプリが起動した後もまだ簡単な黒い画面が表示されています。その後、ホーム画面に戻って、その後は私の意図通りに機能します。私は自分のアクティビティでsetContentViewを使用していないので(ビューの取得を奪っても)、黒い画面を避けるのに十分だと思っていましたが、まだポップアップしていました。 (関連する質問で示唆されているように)、サービスは私の問題に対する答えではありません。私はちょうど実行し、すぐ終了するGUIのない​​(1つのトーストを除く)アプリが欲しいです。 感謝:)

+1

サービスがあなたの問題に対する答えではない理由を説明したなら、おそらく役に立ちます。これは非常にサービス指向のように聞こえる。 – Matt

+1

まず、私のプロセスがサービスのようにバックグラウンドで実行し続けることを望まないからです。私は迅速かつきれいな入力して終了します。第二に、Androidのドキュメントには、アクティビティにUIを用意する必要はないと書かれていますが、その方法はわかりませんでした。 (回答1はすでに私の問題を解決しました) ありがとうと思います。 – shutou

答えて

17

android:theme="@android:style/Theme.NoDisplay" 

注意ですonResume()から戻る前にfinish()に電話します。それ以降にもっと仕事をするつもりなら(例えば、ネットワーキングや他のものを迅速に同期させることができない場合など)、あなたはおそらくサービスを開始して、アクティビティーが終了した後も、プロセスは実行され続けます。

+0

素晴らしい!これはまさに私が必要としていたものです。私のプロセスがバックグラウンドで実行し続けることを望まないからです。ありがとう! – shutou

+0

@shutou:これはサービスを開始するよりもオーバーヘッドが多い(おそらくわかりませんが)。サービスをバックグラウンドで実行し続ける必要はありません。私の答えに対する私の答えを見てください。 – Falmarri

+0

実際のアクティビティをロジック(イントロ、サインアップ、コンテンツなど)によって判断する必要があるため、ランチャーアクティビティとしてエントリアクティビティを使用しています。これの前にエントリーアクティビティも表示されますが、これは迷惑でしたが、今は消えてしまいました!ありがとう – Meanman

-1

サービスが私の 問題

への答えではありませんはい、これはあなたを想定して、マニフェストの使用で<activity>

+0

申し訳ありませんが、私が欲しいことをするための代替方法かもしれませんが、答えに見られるように、アプリのUIの表示を止めることは可能です。私は単純なアプリケーションが完了した後でバックグラウンドプロセスを実行したくないので、私はサービスが私が必要とするもの以上になるかもしれないと考えました。私はまだ、サービスがAnswer 1で与えられたソリューションよりも効率的かどうかを確かめるのに十分ではないことを認めています。これは、私のアプリケーションが余分なプロセスに及ばない最小限のアクティビティまたはスレッド。長所と短所をより詳細に検討するために、サービスについてもっと知ることができます。ありがとう – shutou

+0

サービスは余分なプロセスやスレッドを生成しません。本質的にサービスはGUIのない​​活動です。私は完全にソースコードを検査していないが、私はそれがほぼ正確になるだろう。サービスを実行したままにする必要はありません。実際には、そうしないでください。サービスを開始し、仕事をしてから、 'stopSelf()'を呼び出してください。 – Falmarri

0

IntentServiceの仕事のように聞こえる。 インテントを送信し、実行していない場合は受信したインテントをすべて処理してから停止します。短くてシンプル。