Must every activity have a layout?

前端 未结 3 1617
孤独总比滥情好
孤独总比滥情好 2020-12-09 02:57

I\'m just getting started with Android and was reading up BroadcastReceiver. Since the MainActivity was being used only to get the alarm time in seconds, it got me thinking

相关标签:
3条回答
  • 2020-12-09 03:18

    The answer is yes it's possible. Activities don't have to have a UI. It's mentioned in the documentation, e.g.:

    An activity is a single, focused thing that the user can do. Almost all activities interact with the user [...]

    (see http://developer.android.com/reference/android/app/Activity.html)

    Related SO question: https://stackoverflow.com/a/12817384/534471

    To e.g. display a Toast from an Activity without layout you would define the activity in your manifest like so:

    <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>
    

    The code would look like this:

    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();
        }
    }
    
    0 讨论(0)
  • 2020-12-09 03:26

    I think you need to understand more about what is context in Android. BroadcastReceiver is different from Activity, layout inflation is not needed.

    0 讨论(0)
  • You can implement an Activity without a UI. In the manifest you can specify android:theme="@android:style/Theme.NoDisplay". Take a look at this

    You can also implement a Service which does not have any UI so you do not need layout inflation. Service just runs in background and shows no views. Take a look at Android Training and API Guide to learn more about Services

    0 讨论(0)
提交回复
热议问题