Issue
I need to make status of user offline. When I press home button onStop() is called, that's fine. When I press back button onDestroy() is invoked. But when I close the app from recent apps by swiping it, onStop() or onDestroy() isn't called.
I need to know when the app is closed from recent apps to do something (e.g make user offline).
Solution
Make a service :
public class MyService extends Service { private DefaultBinder mBinder; private AlarmManager alarmManager ; private PendingIntent alarmIntent; private void setAlarmIntent(PendingIntent alarmIntent){ this.alarmIntent=alarmIntent; } public void onCreate() { alarmManager (AlarmManager)getSystemService(Context.ALARM_SERVICE); mBinder = new DefaultBinder(this); } @Override public IBinder onBind(Intent intent) { return mBinder; } public void onTaskRemoved (Intent rootIntent){ alarmManager.cancel(alarmIntent); this.stopSelf(); } }Make a custom class :
public class DefaultBinder extends Binder { MyService s; public DefaultBinder( MyService s) { this.s = s; } public MyService getService() { return s; } }Add to your activity :
MyService service; protected ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder binder) { service = ((DefaultBinder) binder).getService(); service.setAlarmIntent(pIntent); } public void onServiceDisconnected(ComponentName className) { service = null; } }; protected void onResume() { super.onResume(); bindService(new Intent(this, MainService.class), mConnection, Context.BIND_AUTO_CREATE); } @Override protected void onStop() { super.onStop(); if (mConnection != null) { try { unbindService(mConnection); } catch (Exception e) {} } }
Answered By - Mohammad moradyar
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.