Android Service to show toast

android, service, toast

Solution

See this part of the docs

(An IntentService has a few limitations:

It can't interact directly with your user interface. To put its results in the UI, you have to send them to an Activity.

You need to put it on the main `Thread`. See the answer here by rony of a way to do that.

and from the full documentation on IntentService

handles each Intent in turn using a worker thread

Problem

This code is supposed to use a service to show a toast message. There are no errors, but it doesn't show the toast. main activity ``` public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent i= new Intent(this, BackgroundMusic.class); this.startService(i); } } ``` service (its called Background Music but for now it is supposed to show a toast message) ``` public class BackgroundMusic extends IntentService { public BackgroundMusic() { super("BackgroundMusic"); } @Override protected void onHandleIntent(Intent intent) { // Normally we would do some work here, like download a file. // For our sample, we just sleep for 5 seconds. Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show(); } } ``` manifest ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.starwars" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:debuggable="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <service android:name=".BackgroundMusic" /> <activity android:name="com.example.starwars.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/app_name" android:name="BackgroundMusic"/> </application> </manifest> ```

Original source

Related problems