私は5〜10のサービスを呼び出す必要があるアプリケーションで作業しています。サービスを1つずつ呼び出す必要があります。 2番目のサービスを呼び出すには、これが作業フローです。私は目的のためにインテントサービスを使用しました。効率的な方法でこれを達成する方法。インテントサービスを使用して1つずつアクティビティで5つのサービスを呼び出す方法
このmainactivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Intent service_1=new Intent(MainActivity.this,Service1.class);
startService(service_1);
Intent service_2=new Intent(MainActivity.this,Service2.class);
startService(service_2);
Intent service_3=new Intent(MainActivity.this,Service3.class);
startService(service_3);
}
}
第一サービス
public class Service1 extends IntentService{
public Service1() {
super("serviceone");
}
@Override
protected void onHandleIntent(Intent intent) {
for(int i=0;i<1000;i++)
{
Log.e("service1","service1::............."+i);
}
}
}
第二サービス
public class Service2 extends IntentService {
public Service2() {
super("service2");
}
@Override
protected void onHandleIntent(Intent intent) {
for(int i=0;i<100;i++)
{
Log.e("service2", "service::2*****************" + i);
}
}
}
第三のサービス
public class Service3 extends IntentService{
public Service3() {
super("service3");
}
@Override
protected void onHandleIntent(Intent intent) {
for(int i=0;i<100;i++)
{
Log.e("service3", "service::3####################" + i);
}
}
}
IAM取得ログ
ce1: service1::.............323
08-18 16:12:14.441 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............324
08-18 16:12:14.441 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............325
08-18 16:12:14.441 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............326
08-18 16:12:14.441 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............327
08-18 16:12:14.441 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............328
08-18 16:12:14.441 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............329
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************0
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************1
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************2
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************3
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************4
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************5
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************6
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************7
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************8
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************9
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************10
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************11
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************12
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************13
08-18 16:12:14.453 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************14
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************15
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************16
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************17
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************18
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************19
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************20
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************21
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************22
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************23
08-18 16:12:14.454 6614-6641/homedashboard.egrove.com.multipleservice E/service2: service::2*****************24
08-18 16:12:14.457 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............330
08-18 16:12:14.457 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............331
08-18 16:12:14.457 6614-6640/homedashboard.egrove.com.multipleservice E/service1: service1::.............332
第二のアプローチ
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Intent service_2 = new Intent(MainActivity.this, Service2.class);
// startService(service_2);
//Intent service_3 = new Intent(MainActivity.this, Service3.class);
// startService(service_3);
AlarmManager alarmManager=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent1 = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent1, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),10000,
pendingIntent);
}
}
放送受信機
public class AlarmReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//get and send location information
Intent service_1 = new Intent(context, Service1.class);
context.startService(service_1);
Intent service_2 = new Intent(context, Service2.class);
context.startService(service_2);
}
}
サービスクラス
public class Service1 extends IntentService{
public Service1() {
super("serviceone");
}
@Override
protected void onHandleIntent(Intent intent) {
forloopMethod();
}
private void forloopMethod()
{
for(int i=0;i<10000;i++)
{
Log.e("service1","service1::.serviceone............"+i);
}
}
}
エラーログ
ice E/service1: service1::.serviceone............9837
08-18 17:47:39.916 12517-21515/homedashboard.egrove.com.multipleservice E/service1: service1::.serviceone............9838
08-18 17:47:39.916 12517-21515/homedashboard.egrove.com.multipleservice E/service1: service1::.serviceone............9839
08-18 17:47:39.916 12517-21515/homedashboard.egrove.com.multipleservice E/service1: service1::.serviceone............9840
08-18 17:47:39.916 12517-21515/homedashboard.egrove.com.multipleservice E/service1: service1::.serviceone............9841
08-18 17:47:39.936 12517-21516/homedashboard.egrove.com.multipleservice E/service2: service::2*****************9751
08-18 17:47:39.936 12517-21516/homedashboard.egrove.com.multipleservice E/service2: service::2*****************9752
08-18 17:47:39.936 12517-21516/homedashboard.egrove.com.multipleservice E/service2: service::2*****************9753
08-18 17:47:39.936 12517-21516/homedashboard.egrove.com.multipleservice E/service2: service::2*****************9754
同じIが完了した最初のサービス.After最初のサービスコールをしたいとして、第2のサービスのcall.Thisになるだろう取得私need..help
なぜあなたは 'BroadcastReceiver'にしようとしないのですか? 'サービス 'が開始されるたびに、' Activity'に登録された 'BroadcastReceiver'にメッセージを送ります。そのメッセージに応じて、今すぐ開始したいサービスを決定します。 –
以下のコードをご覧ください –
どのコードを指していますか?以下のコードは見つかりませんでした:( –