MyService.java
public class MyService extends Service { Thread workerThread = null; int counter=0; @Override public int onStartCommand(Intent intent, int flags, int startId) { final Handler handler = new Handler(getMainLooper()); synchronized (this) { Runnable runnable = new Runnable() { @Override public void run() { handler.post(new Runnable() { @Override public void run() { counter++; Toast.makeText(MyService.this, "Service Started: " + counter, Toast.LENGTH_SHORT).show(); } }); for (int i = 0; i < 10; i++) { try { wait(1500); } catch (Exception e) { e.printStackTrace(); } } } }; if (workerThread == null) { workerThread = new Thread(runnable); workerThread.start(); } } return Service.START_STICKY; } @Override public void onDestroy() { super.onDestroy(); if (workerThread != null) { workerThread.interrupt(); workerThread = null; Toast.makeText(MyService.this, "Service Stopped", Toast.LENGTH_SHORT).show(); } } @Nullable @Override public IBinder onBind(Intent intent) { return null; } }
AndroidManifest.xml
<service android:name=".MyService" />
MainActivity.java
public class MainActivity extends AppCompatActivity { Button buttonStartService; Button buttonStopService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonStartService = (Button) findViewById(R.id.buttonStartService); buttonStopService = (Button) findViewById(R.id.buttonStopService); buttonStartService.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, MyService.class); startService(intent); } }); buttonStopService.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, MyService.class); stopService(intent); } }); } }
References
https://www.youtube.com/watch?v=foGmyYe2bV8
https://github.com/mhdr/AndroidSamples/tree/master/099