アプリケーションが閉じられている(強制終了されている)場合でも、ユーザーがアプリを起動しない場合でも、このサービスを実行してください。アプリケーションのインストール後にサービスを開始したいのですが、この時点から、サービスは常に実行されるはずです。
public class notifications extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
}
@Override
public void onStart(Intent intent, int startId) {
final Handler handler = new Handler();
final Runnable runb = new Runnable()
{
public void run()
{
Toast.makeText(getApplicationContext(), " Service Started", Toast.LENGTH_LONG).show();
handler.postDelayed(this, 10000);
}
};
handler.postDelayed(runb, 0);
}
@Override
public void onDestroy() {
}
}*/
public class notifications extends IntentService
{
private Timer mBackGroundTimer;
public notifications()
{
super("myservice");
this.mBackGroundTimer=new Timer();
}
@Override
protected void onHandleIntent(Intent intent)
{
// TODO Auto-generated method stub
mBackGroundTimer.schedule(new TimerTask()
{
public void run()
{
try
{
Notification("This is message from Dipak Keshariya (Android Application Developer)", "This is Android Notification Message");
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
},1000, 2000);
} // END onHandleIntent()
private void mStopTimer()
{
//Call this whenever you need to stop the service
mBackGroundTimer.cancel();
}
private void Notification(String notificationTitle, String notificationMessage) {
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Android.app.Notification notification = new Android.app.Notification(R.drawable.ic_launcher, "A New Message from Dipak Keshariya (Android Developer)!",
System.currentTimeMillis());
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(getApplicationContext(), notificationTitle, notificationMessage, pendingIntent);
notificationManager.notify(10001, notification);
}
}
どうすればできますか?
コードを見ると、サービスに定期的に通知を送信したいようです。
継続的に実行する限り、Androidシステムはサービスプロセスをいつでも終了する可能性があることに注意してください。これには少し影響がありますが、システムを妨げることはできませんあなたのサービスを殺すことから。
したがって、定期的なアクションでは、AlarmManagerを繰り返し発生するアラームとともに使用するのが最善です。その場合、サービスは基本的にワンショットになります。つまり、アクションを1回実行してから終了します。
いくつかのコードについては、例えばここを見てください:
ServiceクラスのOnStartCommandメソッドを実装し、その中にService.START_STICKYを返す必要があります。これでうまくいきます。アプリケーションを強制終了すると、サービスは引き続きバックグラウンドで実行されます。ただし、携帯電話を再起動する場合は、アプリに他の何か、ブートサービスなどを実装する必要があると思います。
この質問への答えはこれだと思います: https://developer.Android.com/training/sync-adapters/creating-sync-adapter.html
Google I/O 2013で導入された同期アダプター。
要件として、サービスをバックグラウンドで実行する必要があります。これはバックグラウンドでの実行のみを目的としているため、サービスを使用するための正しい道を進んでいます。
活動からあなたはサービスを開始することができます
startService(new Intent(activityName.this, serviceName.class));
または、アプリケーションにアクティビティがない場合は、次のコマンドを入力して、サービスをアプリケーションのデフォルトおよびメインランチャーとして設定できます。
<service Android:name="name of the service" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</service>