これに関連するコードがたくさんあります。しかし、私はまだ問題に直面している 私は多くのチュートリアルとドキュメントをgoogled、私はアプリケーションを最小限に抑えるときに私はサービスを実行することができる!アプリケーションが終了または終了したときに応答しないアプリが終了すると、サービスはバックグラウンドで機能しません
ここは私のコードです!これは私のサービスクラス
public class MyService extends Service {
final public static String ONE_TIME = "onetime";
public static final String MyPREFERENCES = "MyPrefs";
SharedPreferences sharedpreferences;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Toast.makeText(this, "ServiceClass.onStart()", Toast.LENGTH_LONG).show();
Log.d("Testing", "Service got started");
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
//I need to call this every say-10 second
final String URL = "http://nrna.org.np/nrna_app/app_user/set_location/" + sharedpreferences.getString("Save_user_app_id", null) + "/np";
// if (isNetworkAvailable() == true) {
RequestQueue queue = Volley.newRequestQueue(MyService.this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, null, null);
// Add the request to the RequestQueue.
queue.add(stringRequest);
// Let it continue running until it is stopped.
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}
であると私はアプリが閉じている場合に実行する必要があります
// Method to start the service
public void startService(Context context) {
Intent intent = new Intent(MainActivity.this, MyService.class);
PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 1000, pintent);
//startService(new Intent(getBaseContext(), MyService.class));
}
私のマニフェストファイル
<service android:name=".MyService"/>
私のメインの活動からこのサービスを呼び出した!!
更新日私はBroadCastReceiverを使いました!しかし、再び働かない。
public class BaseNotificationManager extends BroadcastReceiver {
public static final String BaseAction = "Com.TST.BaseAction";
public static final String FireService = "Com.TST.FireNotificationAction";
private static final long timeFrame = 1000*10; // 5 mints
public BaseNotificationManager() {
}
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
/// add base alarm manager
startBaseAlarmManager(context);
}else if (BaseAction.equals(intent.getAction())){
// StartYourService();
intent = new Intent(context,MyService.class);
PendingIntent pintent = PendingIntent.getService(context, 0, intent, 0);
AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 1000, pintent);
}
} public static void startBaseAlarmManager (Context context){
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, BaseNotificationManager.class);
intent.setAction(BaseAction);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
5000, timeFrame, alarmIntent);
}}
'getBaseContext()'の代わりに 'this'を渡してみてください – Vucko
いいえ..動作しません! –