web-dev-qa-db-ja.com

すべてのアクティビティにレイアウトが必要ですか?

Androidで始めたばかりで、BroadcastReceiverを読み上げていました。MainActivityはアラーム時間を数秒で取得するためにのみ使用されていたため、レイアウトXMLファイルはAndroidでのアクティビティです。つまり、起動時にビューが表示されず、レシーバーが正常にセットアップされるアプリを作成することは可能ですか?

25
dotslash

答えはイエスです、可能です。アクティビティにUIは必要ありません。ドキュメントで言及されている、例えば:

アクティビティは、ユーザーが実行できる単一の集中的な作業です。ほとんどすべてのアクティビティはユーザーと対話します[...]

http://developer.Android.com/reference/Android/app/Activity.html を参照)

関連SO質問: https://stackoverflow.com/a/12817384/534471

例えばレイアウトなしでアクティビティからトーストを表示するには、次のようにマニフェストでアクティビティを定義します。

<activity
    Android:name=".MainActivity"
    Android:theme="@Android:style/Theme.NoDisplay">
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />
        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

コードは次のようになります。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Toast.makeText(this, "I'm alive", Toast.LENGTH_LONG).show();
        finish();
    }
}
39

UIなしでアクティビティを実装できます。マニフェストでは、Android:theme="@Android:style/Theme.NoDisplay"を指定できます。 this を見てください

UIを持たないサービスを実装することもできるので、レイアウトをインフレーションする必要はありません。サービスはバックグラウンドで実行され、ビューは表示されません。 Androidトレーニング および APIガイド を見て、サービスの詳細をご覧ください

9
Dulanga

Androidの コンテキストとは何か についてもっと理解する必要があると思います。 BroadcastReceiverはActivityとは異なり、レイアウトのインフレーションは必要ありません。

3
Neoh