アンドリュース20.1サービスサービスオープンクローズ方法

ビューの特定のポイントからサービスサービスは、界面活性が存在しないことを理解することができ、

サービスのライフサイクルアプローチは活動の一部に満たない、唯一のonCreate、ONSTART、onDestroy

また、2つのサービスの利用に分割され、

最初は、開閉することであり、第二は、和解の結合タイであります

 

オープンサービス(STARTSERVICE)

サービスは、発信者の活動が終了し、発信者との一切の関係に開いていないと、サービスはまだバックグラウンドサービスの動作に影響を与えることなく、実行されています。

あなたは活動におけるメソッド内のサービスを呼び出すことはできません

 

バインディングサービス(bindService)

道オープンサービスを結合することによって、サービスとサービスは学生と行うが、同じ金型用しません。呼び出し側の活動が終了した場合、彼はバインドされたサービス終了に従います。

サービスでの活動は、メソッド内で呼び出すことができます

 

 

まず、OnCreate関数の実装に始まり、そしてONSTART、最後に破棄指示し、

そして、発信者終了サービスが終了し、次回再びライン上の呼び出し側は、まだこのサービスをオフにすることができないとき

サービスは独立して生きることができることを、この手段

第1の現象は、ケースであります

 

 

現象によって、私たちは3例を実行している、見ることができます

前に使用されていません。このサービスは、実行1.作成し、二段階を起動することで、

2.その後、サービスを開くためにクリックするだけで、ステップを「開始」を実行することができ、破壊前にサービスを作成し、いません

3.サービスを閉じたときに、オープンは再作成して開始を開始したクリック

サービスに行われていない何のサービスを閉じないようにします4。

 

アイデアの実現:彼はサービスを継承して、新しいとして私たちの新しい活動として、新しいサービスを作成し、

それから彼はmainfestに登録して行きました。

パッケージcom.example.xialm.service_21tolog; 

インポートandroid.app.Service;
 インポートandroid.content.Intent;
 インポートandroid.os.IBinder;
 インポートandroid.support.annotation.Nullable;
 インポートandroid.util.Log; 

/ ** 
 * 。2019年11月7日ON xialmによって作成
 * / 
パブリック クラス MyOwnService 拡張サービス{ 

    プライベート int型のI1、I2、I3、I4を; 

    // 時間だけ呼び出されます作成
    @Override
     公共 のボイドのonCreate(){ 

        I1 ++ ; 
        ログイン.I( "ログ"、+ I1 + "回" "私が最初に作成しました" );

    } 

    // あなたが実行するたびに呼び出されます
    @Override
     公共 のボイド ONSTART(テントテント、int型startID){ 
        I2 ++ ; 
        Log.i( "ログ"、+ I2 + "回" "私が最初に走りました" ); 

    } 

    // たびオフが呼び出されます。
    @Override
     公共 無効onDestroy(){ 
        I3 ++ ; 
        Log.i(、+ I3 + "回" "私は上終わった" "ログイン" ); 

    } 

    @Nullable 
    @Override 
    公共IBinder [OnBind]の(意図意図){
         リターン はnull ; 
    } 
}

 

mainactivityコード

パッケージcom.example.xialm.service_21tolog。

輸入android.content.Intent;
輸入android.support.v7.app.AppCompatActivity;
輸入android.os.Bundle;
輸入android.util.Log;
輸入android.view.View;
輸入android.widget.Button; 

パブリック クラス MainActivityは拡張AppCompatActivity { 

    プライベートボタンb_openを。
    プライベートボタンb_close。

    @Override 
    保護された ボイドのonCreate(バンドルsavedInstanceState){
         スーパー.onCreate(savedInstanceState)。 
        setContentView(R.layout.activity_main)を、
 
        B_open = (ボタン)findViewById(R.id.b_1); 
        b_close = (ボタン)findViewById(R.id.b_2); 

        b_open.setOnClickListener(新しい新しいView.OnClickListener(){ 
            @Override 
            公共 のボイドのonClick(ビューV){ 
                テントテント = 新しい新しいテント(「fuwu1」);
                 //はアンドロイド5.0以降、パッケージを取得するには、その名前を追加する必要があります
                 。//が5.0後にパッケージ名を設定する必要性と互換性のある、5.0アンドロイド、
                 // これは(同じ目的フィルタを有する複数のサービス)は、異なるパッケージ間反対である衝突を防止するために
                 //サービスが開始開始されていないことを注意活動
                intent.setPackage(getPackageName())。
                STARTSERVICE(インテント)。
            } 
        })。

        b_close.setOnClickListener(新しいView.OnClickListener(){ 
            @Override 
            公共 のボイドのonClick(ビューV){ 
                テントの意図 = 新しいテント( "fuwu1" ); 
                intent.setPackage(getPackageName()); 
                // Log.i(「当前包」getPackageName()); 
                stopService(意図); 
            } 
        })。

    } 
}

XML

<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> 
< RelativeLayout のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" 
    のxmlns:ツール= "http://schemas.android .COM /ツール」
    アンドロイド:layout_width = "match_parent" 
    のandroid:layout_height = "match_parent" 
    アンドロイド:paddingBottomの= "@ DIMEN / activity_vertical_margin" 
    アンドロイド:paddingLeft = "@ DIMEN / activity_horizo​​ntal_margin" 
    アンドロイド:paddingRight = "@ DIMEN / activity_horizo​​ntal_margin" 
    アンドロイド:paddingTop = "@ DIMEN / activity_vertical_margin" 
    ツール:> 

    < TextViewの
         アンドロイド:ID = "@ + ID / TV1" 
        アンドロイド:layout_width = "wrap_content" 
        のandroid:layout_height = "wrap_content" 
        アンドロイド:テキスト= "Hello Worldの!"  /> 

    < ボタン
         アンドロイド:ID = "@ + ID / B_1" 
        アンドロイド:layout_below = "@ + ID / TV1" 
        アンドロイド:テキスト= "开服务" 
        のandroid:layout_width = "wrap_content" 
        のandroid:layout_height = "wrap_content"  /> 

    < ボタン
         アンドロイド:ID = "@ + ID / B_2を"
        アンドロイド:テキスト= "关服务" 
        のandroid:layout_width = "wrap_content" 
        のandroid:layout_height = "wrap_content"  /> 

</ RelativeLayout >

 

 

おすすめ

転載: www.cnblogs.com/gzyx/p/11811111.html