من یه سرویس دارم گه ناتیفکشنهای رو از سرور دریافت می کنه ....سرویس توی بگراند کار میکنه و مشکلی نداره ولی وقتی حافظه پاک میشه سرویس از کار می افته ...
باید چیکار کنم که سرویس بعد از پاک شدن حافظه هم باقی بمونه ؟
این لینکها و هرچی لینک توی اینترنت بود گشتم و اجرا کردم ولی هنوز با پاک کردن حافظه سرویس از کار می افته
برنامه های مثل فیس بوک چجوری کار می کنن که همیشه ناتیفکشن ها رو دریافت می کنن ؟
یا همین موزیک پلیرها که با پاک کردن حافظه هم باز کار میکنن؟
این کدهای من هستش : کدهای بخش ریستارت شدن سرویس
@Override
public void onTaskRemoved(Intent rootIntent){
Log.i("service","service are killed");
sendBroadcast(new Intent("YouWillNeverKillMe"));
Intent restartServiceIntent = new Intent(this, this.getClass());
restartServiceIntent.setPackage(getPackageName());
PendingIntent restartServicePendingIntent = PendingIntent.getService(G.context, 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmService = (AlarmManager) G.context.getSystemService(G.context.ALARM_SERVICE);
alarmService.set(
AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() +3000,
restartServicePendingIntent);
super.onTaskRemoved(rootIntent);
}
@Override
public void onDestroy() {
super.onDestroy();
sendBroadcast(new Intent("YouWillNeverKillMe"));
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, final int startId) {
if (getNotic == null) {
getNotic=new Timer();
getNotic.schedule(new TimerTask() {
@Override
public void run() {
get_notic();
}
},10*60*1000,10*60*1000);
}
return START_STICKY;
}
اینم هم برود کست
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("service", "onReceive");
context.startService(new Intent(G.context, backDoor.class));
}
}
این هم کدهای فایل منیفست
<service android:name=".backDoor"
android:process=":remote" >
</service>
<receiver android:name="com.oneremind.oneremind.MyBroadcastReceiver">
<intent-filter>
<action android:name="YouWillNeverKillMe" >
</action>
</intent-filter>
</receiver>
اگه سرویس رو بصورت Foreground اجرا کنید، با پاکشدن حافظه معمولاً بسته نمیشه مگه اینکه ضروری باشه و حافظه گوشی خیلی محدود بشه طوری که در اجرای پردازشهای خود سیستم مشکل پیش بیاره که در اینصورت اپلیکیشنهایی مثل Facebook هم بسته میشن. بعلاوه این سرویسها با Push Notification کار میکنن نه اینکه هر چند لحظه یکبار به سرور درخواست بفرستن. Broadcast Listener رو اگه توی مانیفست تعریف کنید، حتی با بستن برنامه هم کار میکنه (همین کاری که شما انجام دادین). حالا نمیدونم منظورتون از اون intent-filter چی بوده چون نیازی بهش نیست.