Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6170521
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T23:03:03+00:00 2026-05-23T23:03:03+00:00

I currently have an Activty that when created starts and binds with a service

  • 0

I currently have an Activty that when created starts and binds with a service. This service has a mediaplayer. What I would like to do is if the activity is resumed then the service keeps playing, etc. When the activity is destroyed, it should stop the service. So far I can get both the service to keep playing when activity is re-activated and the service to stop when a new activity is created but not both together. Any suggestions or ideas? Thanks. Code below:

Activity class:

public class DUBAudioActivity extends Activity{

    private static final String TAG = DUBAudioActivity.class.getSimpleName();

    Button playPauseButtonDUB;
    Intent playbackServiceIntentDUB;


    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sdrplaylist_dubstep);

        playPauseButtonDUB = (Button)findViewById(R.id.playpausebuttonDUB);

        playbackServiceIntentDUB = new Intent(this, DUBAudioService.class);
        Log.d(TAG, "created intent");

        startService(playbackServiceIntentDUB);

        Log.d(TAG, "bound service");
        //
        //set button text
         playPauseButtonDUB.setText("Pause");
         //set button tag
        playPauseButtonDUB.setTag(1);



        playPauseButtonDUB.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                //set the tag stuff
                final int status = (Integer) v.getTag();
                //create if statement for the button to do play and pause
                if(status==1){
                    playPauseButtonDUB.setText("Play");
                    v.setTag(0);
                    Log.d(TAG, "set tag to 0");
                    baServiceDUB.pauseSong();
                    Log.d(TAG, "pause song");   
                }else{
                    playPauseButtonDUB.setText("Pause");
                    v.setTag(1);
                    Log.d(TAG, "set tag to 1");
                    baServiceDUB.playSong();
                    Log.d(TAG, "song play'd");
                }

            }

        });
    //
    }
    private DUBAudioService baServiceDUB;

    private ServiceConnection serviceConnectionDUB = new ServiceConnection(){
        public void onServiceConnected(ComponentName className, IBinder baBinder) {
            baServiceDUB =
            ((DUBAudioService.DUBBackgroundAudioServiceBinder)baBinder).getService();
        }

        public void onServiceDisconnected(ComponentName className){
            baServiceDUB = null;
        }
//
    };

    void doBindService(){
        getApplicationContext().bindService(playbackServiceIntentDUB, serviceConnectionDUB,
                Context.BIND_AUTO_CREATE);
        Log.d(TAG, "do bind service");

    }

    @Override
    public void onResume() {
        getApplicationContext().bindService(playbackServiceIntentDUB, serviceConnectionDUB,
                Context.BIND_AUTO_CREATE);
            Log.d(TAG, "on resume + re-bound service");
        super.onResume();
    }

    @Override
    public void onDestroy(){
        stopService(playbackServiceIntentDUB);
        getApplicationContext().unbindService(serviceConnectionDUB);

        Log.d(TAG, "destroy'd + unbind service");
        //finish();
        super.onDestroy();
    }

}

Service Class:

public class DUBAudioService extends Service implements OnPreparedListener, OnCompletionListener{

Toast loadingMessage;

private static final String TAG = DUBAudioService.class.getSimpleName();

    public boolean isRunning;

    //to keep track of the playlist item
    Vector<PlaylistFile> playlistItems;

    MediaPlayer mediaPlayer;

    String baseURL = "";

    //keep track of which item from the vector we are on
    int currentPlaylistltemNumber = 0;

    public class DUBBackgroundAudioServiceBinder extends Binder {
        DUBAudioService getService() {
        return DUBAudioService.this;
        }
    }

    private final IBinder basBinderDUB = new DUBBackgroundAudioServiceBinder();



    @Override
    public IBinder onBind(Intent intent) {
        return basBinderDUB;
    }

    @Override
    public void onCreate() {
        Log.v("PLAYERSERVICE", "onCreate");
        mediaPlayer = new MediaPlayer();
        new MusicAsync().execute();
            Log.d(TAG, "execute'd async");
        mediaPlayer.setOnPreparedListener(this);
            Log.d(TAG, "set on prepared listener");
        mediaPlayer.setOnCompletionListener(this);
            Log.d(TAG, "set on completion listener");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //if (!mediaPlayer.isPlaying()) {
        //  mediaPlayer.start();
        //}
        return START_STICKY;
    }

    class MusicAsync extends AsyncTask<Void,Void,Void>{
        @Override
        protected void onPreExecute(){
        }
        @Override
        protected Void doInBackground(Void... arg0) {
            // TODO Auto-generated method stub

            //create empty vector 
            playlistItems = new Vector<PlaylistFile>();

            //HTTP client library
            HttpClient httpClient = new DefaultHttpClient();
            HttpGet getRequest = new HttpGet ("http://dl.dropbox.com/u/24535120/m3u%20playlist/DubstepPlaylist.m3u"); //i think you could add the m3u thing in here 

            Log.v("URI",getRequest.getURI().toString());

            try {
            HttpResponse httpResponse = httpClient.execute(getRequest);
            if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
            // ERROR MESSAGE
            Log.v("HTTP ERROR",httpResponse.getStatusLine().getReasonPhrase());
            }
            else {
                InputStream inputStream = httpResponse.getEntity().getContent(); 
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

                String line;
                while ((line = bufferedReader.readLine()) != null) { 
                    Log.v("PLAYLISTLINE","ORIG: " + line);

                    if (line.startsWith("#")) {
                        //Metadata
                        //Could do more with this but not fo now
                    } else if (line.length() > 0) {
                        String filePath = "";
                            if (line.startsWith("http://")) {
                            // Assume its a full URL 
                                filePath = line;
                            } else {
                            //Assume it’s relative
                            filePath = getRequest.getURI().resolve(line).toString();
                            }

                            PlaylistFile playlistFile = new PlaylistFile(filePath);
                            playlistItems.add (playlistFile);
                            }
                            }
                            inputStream.close();
                            }
                            } catch (ClientProtocolException e) { 
                                e.printStackTrace();
                            } catch (IOException e) {
                            e. printStackTrace();
                            }


                            currentPlaylistltemNumber = 0;
                            if (playlistItems.size() > 0)
                            {
                            String path = ((PlaylistFile)playlistItems.get(currentPlaylistltemNumber)).getFilePath();
                            try {
                                mediaPlayer.setDataSource(path);

                            mediaPlayer.prepareAsync();}
                            catch (IllegalArgumentException e) 
                            { e.printStackTrace();
                            }catch (IllegalStateException e) { 
                                e.printStackTrace();
                            }catch (IOException e) {
                            e.printStackTrace();}
                            }



            return null;
        }
        //
        protected void onPostExecute(Void result){
            //playButton. setEnabled (false);
        }
    }



    @Override
    public void onStart(Intent intent, int startId) {
        // TODO Auto-generated method stub

        super.onStart(intent, startId);
    }

    public void onDestroy() {
        if (mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
            Log.d(TAG, "music stopp'd");
        }
        //mediaPlayer.release();
        Log.d(TAG, "onDestroy");
    }

    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
        // TODO Auto-generated method stub\
        Log.d(TAG, "music is prepared and will start");
        mediaPlayer.start();
    }

    public void onCompletion(MediaPlayer _mediaPlayer) {
        Log.d(TAG, "Song completed, next song");
        mediaPlayer.stop();
        mediaPlayer.reset();
            if (playlistItems.size() > currentPlaylistltemNumber + 1) { 
                currentPlaylistltemNumber++;
            String path =
                ((PlaylistFile)playlistItems.get(currentPlaylistltemNumber)).getFilePath();
                try {
                    mediaPlayer.setDataSource(path);
                    mediaPlayer.prepareAsync();
                } catch (IllegalArgumentException e) { 
                    e. printStackTrace();
                } catch (IllegalStateException e) { 
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }   
    }

    class PlaylistFile {
        String filePath;
            public PlaylistFile(String _filePath) {
                filePath = _filePath;
            }
            public void setFilePath(String _filePath) {
                filePath = _filePath;
            }
            public String getFilePath() {
                return filePath;
            }
        }


    public void playSong(){
        Log.d(TAG, "start'd");
        mediaPlayer.start();
    }

    public void pauseSong(){
        Log.d(TAG, "pause'd");
        mediaPlayer.pause();
    }



}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T23:03:04+00:00Added an answer on May 23, 2026 at 11:03 pm

    I’d say you got lucky that it stopped — only onPause() is guaranteed to be called when your Activity is backgrounded. The only time onDestroy() is called is when the system decides to reclaim the memory your app is using

    The only guaranteed lifecycle calls are:

    • onCreate() only when the app is starting from scratch;
    • onResume() every run, whether paused or first created;
    • onPause() every time the system is moving your app to the background, period.
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have created an application for Android that has an activity that has a
We currently have code like this: Dim xDoc = XDocument.Load(myXMLFilePath) The only way we
My project has an Activity Monitor that monitors the activity of a user. Currently
I have an android activity and a service implemented using aidl. Works like a
I would like to make a service that runs in the background and monitors
I have an activity that has a TabHost containing a set of TabSpecs each
I currently have an MS Access application that connects to a PostgreSQL database via
I currently have a DetailsView in ASP.NET that gets data from the database based
I have an application that uses a service to create an ArrayList of custom
I'm currently have a media player that is streaming an mp3 file. When that

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.