ホームボタンまたは戻るボタンを押すとサービスは実行されますが、アプリを閉じるとサービスはバックグラウンドで実行されません。さらに、一部の(LG Nexus 5)電話ではサービスがバックグラウンドで実行されますが、ほとんどの電話(Samsung、Xioami)では、アプリを閉じるとサービスが実行されません。[設定]> [アプリ]> [実行中]に移動すると、常にアプリが実行中として表示され、1つのサービス1つのスレッドが表示されます。MainActivity.javaからサービスを呼び出しています
アプリが閉じていても、サービスを常にバックグラウンドで実行したい。どんな助けでもありがたいです。
これがサービスTimeService.javaのコードです
public class TimeService extends Service implements
ConnectionCallbacks, OnConnectionFailedListener {
// constant
public static final long NOTIFY_INTERVAL = 30 * 60 * 1000; // 30 minutes
// run on another Thread to avoid crash
private Handler mHandler = new Handler();
// timer handling
private Timer mTimer = null;
@Override
public void onCreate() {
// cancel if already existed
if (mTimer != null) {
mTimer.cancel();
} else {
// recreate new
mTimer = new Timer();
}
// schedule task
mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
class TimeDisplayTimerTask extends TimerTask {
@Override
public void run() {
// run on another thread
mHandler.post(new Runnable() {
@Override
public void run() {
// Send message in background
sendSMS(number,msg)
}
});
}
}
MainActivity.java
public class MainActivity extends Activity
{
Button btnIn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnIn = (Button) findViewById(R.id.btnIn);
btnIn.setOnClickListener(new View.OnClickListener() {
boolean enable = true;
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, TimeService.class);
startService(intent);
}
}
}
Androidマニフェスト
<service android:name=".TimeService" />
バックグラウンドタスクを別のスレッドで実行していましたが、メインスレッドにあるはずです。そのため、一部の電話ではアプリがバックグラウンドで実行されていませんでした。
class TimeDisplayTimerTask extends TimerTask {
@Override
public void run() {
// Send message in background
sendSMS(number,msg);
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加