例えばアクティビティからサービスを開始し、アプリ
//make these 2 variables as fields in Activity for example
YourService yourService = null;
//this variable can be used for checking if your activity are binded already or not
boolean mBounded = false;
Intent mIntent = new Intent(this, YourService.class);
startService(mIntent);
bindService(mIntent, mConnection, BIND_AUTO_CREATE);
ServiceConnection mConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
mBounded = false;
yourService = null;
}
public void onServiceConnected(ComponentName name, IBinder service) {
mBounded = true;
YourService.LocalBinder mLocalBinder = (YourService.LocalBinder) service;
yourService= mLocalBinder.getServerInstance();
}
};
とそれを結合すると、あなたはそれがあなたの活動にバインドされた後にのみ活動にサービスからメソッドを使用することができますことを忘れないでください。言い換えれば、onServiceConnected
が実行された後にのみ利用可能です。 これで、お互いに通信できるサービスとアクティビティができました。 たとえば、あなたがサービスであなたのアクティビティメソッドを呼び出したい場合は、簡単なセッターとサービスに渡す必要があり
if (yourService != null)
yourService.test();
のように、活動中にあなたのサービスのいくつかのパブリックメソッドを呼び出すことができます。すべてのXのサービス要求を行うための
Intent mIntent = new Intent(this, YourService.class);
stopService(mIntent);
:
あなたもサービスがちょっと簡単に停止する場合は
1)あなたは、サービス内の無限大別のスレッドを実行し、Xのために遅延した後、要求を行うことができます秒。
2)X秒ごとにチェックする場合は、AlarmManager
のようなものを使用できます。
3)サービス内でCountDownTimer
を使用してサーバーへのリクエストを行うことも可能です。
再起動後にCheckBoxを設定してサービスを作成する場合は、そのサービスも簡単に作成できます。したがって、簡単なBroadcastReceiver
を使用する必要があります。
まず、チェックボックスの設定をSharedPreferences
に保存し、必要に応じてサービスを実行してください。
public class SimpleReceiver extends WakefulBroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//run below code if you need, depends on your saved value of Checkbox in SharedPreferences
Intent serviceIntent = new Intent(context, YourService.class);
context.startService(serviceIntent);
}
}
そして、それは再起動後に自動的に実行されますを確認するためにあなたのService
とReceiver
についてAndroidManifest
情報に追加することを忘れてはいけない確かに。
<service
android:name=".package.YourService"
android:enabled="true"
android:exported="false"> </service>
<receiver
android:name=".package.SimpleReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action adroid:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
まず、常勤サービスをご希望ですか、チェックボックスの直後ですか?それは自動スタートですか? – DEADMC
チェックボックスをオンにした後は、ユーザーの操作がなければ起動しないでください。 – EyfI
私の声明を確認してください – DEADMC