Androidサービスチュートリアル:アプリケーションをバックグラウンドで実行する方法は?

このAndroidサービスチュートリアルは、音楽の再生など、バックグラウンドで操作を実行する方法を理解するのに役立ちます。UIは添付されていません。

スマートフォンで複数のアプリケーションを使用することがよくありますが、あるアプリケーションから別のアプリケーションに切り替えながら、すべてのアプリケーションがバックグラウンドでアクティブなままであることを確認することもできます。これらは、によって提供されるサービスに他なりません。 。したがって、Androidサービスチュートリアルに関するこの記事は、サービスの操作方法を理解するのに役立ちます。

Javaでパワーを使用する方法

次のトピックについて説明します。





Androidサービスとは何ですか?

サービスは基本的にプロセスです。 Androidサービス 実行するためにバックグラウンドで実行されるコンポーネントですユーザーと対話することなく長時間実行される操作であり、アプリケーションが破棄されても機能します。別のアプリケーションコンポーネントがサービスを開始でき、別のアプリケーションに切り替えてもバックグラウンドで実行され続けます。

さらに、コンポーネントは、それ自体をサービスにバインドして、コンポーネントと対話し、プロセス間通信を実行することもできます。



注意: android.app.ServiceはContextWrapperクラスのサブクラスであり、Androidサービスはスレッドまたは個別のプロセスではありません。

Android-サービスのライフサイクル

Androidサービスのライフサイクルには、2つの形式のサービスがあります。サービスのライフサイクルは、次の2つの異なるパスに従います。

  1. 開始
  2. バウンド

開始



アプリケーションコンポーネントが呼び出すと、サービスが開始されます startService() 方法。開始されると、開始を担当するコンポーネントが破棄された場合でも、サービスはバックグラウンドで無期限に実行できます。を使用して停止します stopService() 方法。サービスは、を呼び出すことによってそれ自体を停止することもできます stopSelf() 方法。

バウンド

アプリケーションコンポーネントが呼び出してサービスにバインドすると、サービスがバインドされます bindService() 。バウンドサービスは、コンポーネントがサービスと対話し、要求を送信し、結果を取得できるようにするクライアントサーバーインターフェイスを提供します。プロセス間通信(IPC)全体で処理します。クライアントは、を呼び出すことによってサービスのバインドを解除できます unbindService() 方法。

Androidサービスのライフサイクル-Androidサービスのチュートリアル-Edureka

Androidサービスに関するこの記事の次のセクションに移り、さまざまなことについて説明しましょうサービスクラスの下のメソッド。

Androidサービスチュートリアル:メソッド

任意のアプリケーションで簡単に操作を実行できる方法がいくつかあります。それらのいくつかは次のとおりです。

方法説明
onStartCommand()

このメソッドは、アクティビティなどの他のコンポーネントがサービスの開始を要求したときに呼び出されます。 startService()

対応する作業が完了したら、サービスを停止するのはあなたの責任です。 stopSelf() または stopService() メソッド。

解放する ()

別のコンポーネントが呼び出してサービスにバインドする場合は、このメソッドを呼び出します bindService()

これを実装するには、クライアントがサービスと通信するために使用するインターフェースを提供する必要があります。それは IBinder オブジェクト。バインドを許可したくない場合は、 ヌル

onUnbind()

すべてのクライアントがサービスによって公開された特定のインターフェースから切断されると、システムはこのメソッドを呼び出します。

onRebind()

すべてが切断されていることが事前に通知された後、新しいクライアントがサービスに接続されたときにこのメソッドを呼び出します。 onUnbind(Intent)

onCreate()

サービスが最初にを使用して作成されるときに、システムはこのメソッドを呼び出します onStartCommand() または 解放する () 。 1回限りのセットアップを実行する必要があります。

onDestroy()

このメソッドは、サービスが使用されなくなり、破棄されるときに呼び出されます。スレッド、登録済みリスナー、レシーバーなどのリソースをクリーンアップするために、サービスでこれを実装する必要があります。

スケルトンコード

public class MainActivity extends Activity {private TextView textView private BroadcastReceiver Receiver = new BroadcastReceiver(){@ Override public void onReceive(Context context、Intent intent){Bundle bundle = intent.getExtras()if(bundle!= null){String string = bundle.getString(DownloadService.FILEPATH)int resultCode = bundle.getInt(DownloadService.RESULT)if(resultCode == RESULT_OK){Toast.makeText(MainActivity.this、 'ダウンロードが完了しました。ダウンロードURI:' + string、Toast.LENGTH_LONG) .show()textView.setText( 'Download done')} else {Toast.makeText(MainActivity.this、 'Download failed'、Toast.LENGTH_LONG).show()textView.setText( 'Download failed')}}}} @Override public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)textView =(TextView)findViewById(R.id.status)} @Override protected void onResume(){super.onResume( )registerReceiver(receiver、new IntentFilter(DownloadService.NOTIFICATION))} @Override protected void onPause(){super.onPause()unregisterReceiver(receiver)} public void onClick(View view){Intent intent = new Intent(this、DownloadService.class)//ダウンロードするファイルとコピー先のサービスに関する情報を追加しますstore intent.putExtra(DownloadService.FILENAME、 'index.html')intent.putExtra(DownloadService.URL、 'www.edureka.co')startService(intent)textView.setText( 'サービス開始')}}

この例では、次のようなメソッドを見ることができます onCreate()onResume()onPause() 。これらのメソッドは、Androidのサービスの構造を構成します。

それでは、このAndroidサービスチュートリアルの実用的な部分に取り掛かりましょう。サービスを作成して処理する方法。

デモ

バックグラウンドで音楽を再生する方法を見てみましょう。それをするために、私は使用します Andriod Studio

ステップ1

新しい空のプロジェクトを作成します。プロジェクトに名前を付け、Javaフォルダーをクリックして、 MainActivity 。まず、追加します MediaPlayer 開始、ループの設定など、プレーヤーの詳細をインポートできるようにします。

パッケージcom.example.mydemoapplicationimport androidx.appcompat.app.AppCompatActivity public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)MediaPlayer player = MediaPlayer.create (これ、Settings.System.DEFAULT_ALARM_ALERT_URI)player.setLooping(true)player.start()}}

注:初めて使用する場合は、BIOSを有効にすることを忘れないでください。これを行うには、システムを再起動します。

仮想デバイスを追加する必要があります。クリックするだけです AVDマネージャーを開きます。

お好みのデバイスを選択すれば、準備は完了です。

これは画面がアクティブな場合にのみ実行されますが、このアプリケーションをバックグラウンドでも機能させるには、コードを数行追加する必要があります。 activity_main.xml ファイル。

ステップ2

対応するコードを実行すると、アプリケーションを実行できるようになり、バックグラウンドで音楽を再生できるようになります。つまり、他のアプリケーションを開いても、このオーディオは引き続き再生されます。

これを行う方法を見てみましょう。

  • Javaフォルダーに別のクラスを作成し、名前を付けます。ここでは、私はそれを「 MyService '。
  • このクラスは、Serviceクラスを拡張します。
  • Serviceクラスのメソッドを取得したら、をクリックしてメソッドを実装します alt + Enter。
  • この後、メソッドをオーバーライドする必要があります。したがって、ウィンドウを右クリックしてオプションを取得します。
  • オーバーライドメソッドを生成し、を選択します onStartCommand() 、および OnDestroy()。
  • 編集する onStartCommand() 次のコードを追加することによるメソッド。
MediaPlayer player = MediaPlayer.create(this、Settings.System.DEFAULT_ALARM_ALERT_URI)player.setLooping(true)player.start()

注意: でこのコードを削除します MainActivity.

  • これにより、ステートメントを削除するように求めるエラーがスローされます。したがって、returnステートメントを削除し、MediaPlayerをプライベートメソッドとして宣言してreturn START_STICKY 。これにより、開始ステータスが返されます。
  • 追加 player.stop() の中に onDestroy() 方法。

ステップ3

に移動 牛肉 レイアウトに移動し、をクリックします android_main.xml アプリケーションのXMLファイルを取得します。

  • TextViewを削除し、LinearLayoutに置き換えて、ボタンを追加します。対応するコードを追加します。
<LinearLayout アンドロイド:オリエンテーション= '垂直' アンドロイド:layout_width= 'match_parent' アンドロイド:layout_height= 'wrap_content' アンドロイド:layout_centerVertical= 'true' ツール:無視する= 'MissingConstraints'>><ボタン アンドロイド:id= '@ + id / buttonStart' アンドロイド:テキスト= 'サービスの開始' アンドロイド:layout_width= 'wrap_content' アンドロイド:layout_height= 'match_parent'/><ボタン アンドロイド:id= '@ + id / buttonStop' アンドロイド:テキスト=「サービスの停止」 アンドロイド:layout_width= 'wrap_content' アンドロイド:layout_height= 'match_parent'/>LinearLayout>>
  • これを行ったら、に戻ります MainActivity XMLファイルとをリンクするために、クラスを作成し、対応するコードを追加します。 MyServiceClass。
パッケージcom.example.newprojectimport androidx.appcompat.app.AppCompatActivity public class MainActivity extends AppCompatActivityimplements View.OnClickListener {private Button start、stop @Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState)setContentView(R.layout .activity_main)start =(Button)findViewById(R.id.buttonStart)stop =(Button)findViewById(R.id.buttonStop)start.setOnClickListener(this)stop.setOnClickListener(this)} @Override public void onClick(View view ){if(view == start){startService(new Intent(this、MyServiceClass.class))} else if(view == stop){stopService(new Intent(this、MyServiceClass.class))}}}

ステップ4

クラスのリンクが完了したら、コードを実行しましょう。

注:AndroidManizest.xmlファイルにサービスクラス名を追加します。

次に、コードを実行しましょう。

サービスを開始すると、別のアプリケーションが開かれていても、バックグラウンドで実行されます。ボタンをクリックすると、サービスを開始または停止できます。

これは、Androidサービスの操作方法を学習した簡単なデモです。

これで、「Androidサービスチュートリアル」に関するこの記事は終わりです。このブログで取り上げられているトピックを明確にしていただければ幸いです。

Androidサービスチュートリアルブログを読み終えたので、Edurekaの 学習をすばやく開始します。

何か質問がありますか?この「Androidサービスチュートリアル」ブログのコメントでそれらに言及することを忘れないでください。折り返しご連絡いたします。