仮想通貨×想い

仮想通貨、プログラミング、unityのこと、最近気になることなど。。。

Android Studio バックグランド処理(Service)java

 開始ボタンでバックグランド処理を始め、停止ボタンでバックグランド処理を終える処理です。

1 activity_main.xml(ボタン設置)

 activity_main.xmlを開き、Buttonを2つ配置する。

 Service開始(id=button1)、Service停止(id=button2)

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="Service開始"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.246"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="642dp" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="Service停止"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.76"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="642dp" />

 

2 MainActivity.java(ボタン動作)

 MainActivity.javaの onCreate()メソッド中に、※を記述する。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// ボタンでサービスを呼び出す--------------------------------------------------
// ボタンの制御
findViewById(R.id.button1).setEnabled(true);
findViewById(R.id.button2).setEnabled(false);

findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// サービスの開始
Intent intent = new Intent(MainActivity.this,MyService.class);
startService(intent);

findViewById(R.id.button1).setEnabled(false);
findViewById(R.id.button2).setEnabled(true);
}
});

findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// サービスの停止
Intent intent = new Intent(MainActivity.this,MyService.class);
stopService(intent);

findViewById(R.id.button1).setEnabled(true);
findViewById(R.id.button2).setEnabled(false);
}
});
// -----------------------------------------------------------------------------

 

3 AndroidManifest.xml(サービスクラス作成)

 ファイル>新規>サービス>サービス  ※サービス(IntentService)ではない!

 ここでは、MyService.javaというファイル名にした。

 マニフェストには下記が自動で書き込まれる。

<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>

 

4 MyService.java(バックグランド処理準備)

 サービスクラスには、次のコードを記述する。

 バックグランド処理させたいことは、onStartCommand()メソッドに記述する。 

package com.pockan.ozaif;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class MyService extends Service {

@Override
public void onCreate() {
super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//
// バックグランドで行わせたい処理
//
return START_NOT_STICKY;
}

@Override
public void onDestroy() {
super.onDestroy();
}

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}

}

 

以上