Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android:Service的非綁定式的創建和生命周期

Android:Service的非綁定式的創建和生命周期

編輯:關於Android編程

Android的Service若使用非綁定式的創建,則創建後將無法再與它取得聯系,即無法傳遞消息參數等;

所以如果希望創建後仍然與其存在聯系,那麼可以參考我的前幾篇博客《Android:Service的綁定和解綁定,Service與Activity通信》,其中講到了Service的綁定和與Activity通信的相關內容(如題目o(^▽^)o)。

 

Service的非綁定式的創建非常的簡單,和啟動Activity差不多。
只需要調用startService()即可創建;而調用stopSercice()則可以停止Service。

看看Service的生命周期圖吧:
1.左邊為非綁定式啟動的生命周期;
2.右邊是綁定式的生命周期;

這裡寫圖片描述

 <喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+z8LD5srH0ru49sD919OjrL3nw+bSwL7Juty88rWlo6zWu9PQwb249rC0xaWjrNK7uPa0tL2oo6zSu7j2zaPWuaOstbGwtM/CyrG0pbeiz+DTpsrCvP6jrM2syrFUb2FzdNK7z8LQxc+ioaM8YnIgLz4KtvhTZXJ2aWNltcTJ+sP81tzG2re9t6jW0M7S08NMb2djYXTK5LP2seq8x6GjPC9wPgo8cD7Uy9DQvdjNvCDI58/Co7o8L3A+CjxwPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20150316/20150316085114119.png" title="\" />

Logcat的截圖如下:
1.當startService()創建Service,調用onCreate()和onStartCommand()兩個生命周期方法;
2.當Service創建後,在點擊創建按鈕,會發現只調用了onStartCommand()而沒有調用onCreate();
3.當stopService()停止Service,調用onDestroy()的生命周期方法;
4.會發現onBind()和UnonBind()沒有被調用,這是為什麼呢?因為這是非綁定式的啟動嗎……

這裡寫圖片描述

好了最後附上代碼:

MainActivity.java:

package activity.wyc.com.service;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {

    private Button btnObj,btn02Obj;

    private Intent intent;

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

        btnObj = (Button)findViewById(R.id.btnObj);
        btn02Obj = (Button)findViewById(R.id.btn02Obj);

        intent = new Intent(MainActivity.this,MyService.class);

        btnObj.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                startService(intent);
                Toast.makeText(MainActivity.this,startService,Toast.LENGTH_SHORT).show();
            }
        });

        btn02Obj.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                stopService(intent);
                Toast.makeText(MainActivity.this,stopService,Toast.LENGTH_LONG).show();
            }
        });

    }

}

MyService.java:

package activity.wyc.com.service;

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

public class MyService extends Service {

    private String MyTag = MyTag;

    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {

        Log.i(MyTag, onBind);

        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException(Not yet implemented);
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.i(MyTag, onCreate);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i(MyTag, onStartCommand);
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        Log.i(MyTag, onDestroy);
        super.onDestroy();
    }

    @Override
    public boolean onUnbind(Intent intent) {
        Log.i(MyTag, onUnbind);
        return super.onUnbind(intent);
    }
}

activity_main.xml:

AndroidManifest.xml:
【注意】Service也是和Activity一樣的組件,四大核心組件之一,所以也必須在AndroidManifest.xml中注冊;



 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved