真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android中IntentService如何使用

本篇文章為大家展示了android中IntentService如何使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)專注于伊犁企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),購物商城網(wǎng)站建設(shè)。伊犁網(wǎng)站建設(shè)公司,為伊犁等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

服務(wù)的簡單說明

一、 前臺服務(wù)與IntentService:

前臺服務(wù)可以一直保持運(yùn)行狀態(tài),而不會由于系統(tǒng)內(nèi)存不足的原因?qū)е卤换厥?/p>

service服務(wù)測試的準(zhǔn)備代碼

我們通過一個(gè)具體的案例來說明start與bind方式的service服務(wù)的生命周期的介紹。項(xiàng)目結(jié)果如下:

android中IntentService如何使用

一、 在MainActivity.java中做一些初始化工作,如下代碼:

private final static String TAG = "MyIntentService";  private MyIntentService.MyBinder binder;   private ServiceConnection connection = new ServiceConnection() {      @Override      public void onServiceConnected(ComponentName name, IBinder service) {          binder = (MyIntentService.MyBinder) service;          binder.sayHello(name.getClassName());      }       @Override      public void onServiceDisconnected(ComponentName name) {          Log.i(TAG, "service disconnect: " + name.getClassName());      }  };   @Override  protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);  }

二、 創(chuàng)建一個(gè)簡單的IntentService服務(wù)類:MyIntentService

package com.example.linux.intentservicetest;   import android.app.IntentService;  import android.content.Intent;  import android.os.Binder;  import android.os.IBinder;  import android.util.Log;   public class MyIntentService extends IntentService {      private final static String TAG = "MyIntentService";      private MyBinder myBinder = new MyBinder();       class MyBinder extends Binder {          public void sayHello(String name) {              Log.i(TAG, "say hello method: " + name);          }           public void sayWorld(String name) {              Log.i(TAG, "say world method: " + name);          }      }       @Override      public IBinder onBind(Intent intent) {          return myBinder;      }       public MyIntentService() {          super("MyIntentService");          Log.i(TAG, "myintent service constructor.");      }       @Override      public void onCreate() {          Log.i(TAG, "on create.");          super.onCreate();      }       @Override      protected void onHandleIntent(Intent intent) {          Log.i(TAG, "handle intent: " + intent.getStringExtra("username") + ", thread: " + Thread.currentThread());      }       @Override      public void onDestroy() {          super.onDestroy();          Log.i(TAG, "on destroy.");      }       @Override      public int onStartCommand(Intent intent, int flags, int startId) {          Log.i(TAG, "on start command.");          return super.onStartCommand(intent, flags, startId);      }       @Override      public boolean onUnbind(Intent intent) {          //默認(rèn)返回false          String username = intent.getStringExtra("username");          Log.i(TAG, "on unbind: " + super.onUnbind(intent) + ", username: " + username);          return true;      }       @Override      public void onRebind(Intent intent) {          Log.i(TAG, "on rebind");          super.onRebind(intent);      }  }

三、 創(chuàng)建一個(gè)簡單的前臺服務(wù)類:FrontService

package com.example.linux.intentservicetest;   import android.app.Notification;  import android.app.PendingIntent;  import android.app.Service;  import android.content.Intent;  import android.os.IBinder;  import android.util.Log;   public class FrontService extends Service {      private final static String TAG = "MyIntentService";      public FrontService() {          Log.i(TAG, "front service constructor");      }       @Override      public IBinder onBind(Intent intent) {          return null;      }       @Override      public void onCreate() {          super.onCreate();          Notification.Builder builder = new Notification.Builder(this);          Intent intent = new Intent(this, MainActivity.class);          PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,                  PendingIntent.FLAG_CANCEL_CURRENT);           builder.setSmallIcon(R.mipmap.ic_launcher).setTicker("ticker");          builder.setWhen(System.currentTimeMillis()).setAutoCancel(true);          builder.setContentTitle("content title").setContentText("content text");          builder.setContentIntent(pendingIntent);           Notification notify = builder.getNotification();           notify.defaults = Notification.DEFAULT_ALL;          startForeground(10, notify);      }  }

四、 在AndroidManifest.xml中注冊服務(wù)與活動(dòng)

                                           

Intent服務(wù)的使用

一、 在MainActivity中創(chuàng)建方法,啟動(dòng)停止服務(wù):

// 開啟服務(wù)  public void startService(View view) {      Intent intent = new Intent();      intent.putExtra("username", "linux");      intent.setClass(MainActivity.this, MyIntentService.class);      startService(intent);  }   // 停止服務(wù)  public void stopService(View view) {      Intent intent = new Intent();      intent.setClass(MainActivity.this, MyIntentService.class);      stopService(intent);  }

二、 在MainActivity中創(chuàng)建方法,綁定解綁服務(wù):

// 綁定服務(wù)  public void bindService(View view) {      Intent intent = new Intent();      intent.setClass(MainActivity.this, MyIntentService.class);      intent.putExtra("username", "linux");      boolean isBind = bindService(intent, connection, Context.BIND_AUTO_CREATE);      Log.i(TAG, "bind service: " + isBind);  }   // 解綁服務(wù)  public void unbindService(View view) {      Intent intent = new Intent();      intent.setClass(MainActivity.this, MyIntentService.class);      unbindService(connection);  }

三、 運(yùn)行結(jié)果

點(diǎn)擊start:

03-25 08:01:53.460 8389-8389/? I/MyIntentService: myintent service constructor.  03-25 08:01:53.460 8389-8389/? I/MyIntentService: on create.  03-25 08:01:53.475 8389-8389/? I/MyIntentService: on start command.  03-25 08:01:53.477 8389-8727/? I/MyIntentService: handle intent: linux, thread: Thread[IntentService[MyIntentService],5,main]  03-25 08:01:53.478 8389-8389/? I/MyIntentService: on destroy.


點(diǎn)擊stop:無輸出
點(diǎn)擊bind:

03-25 08:02:25.421 8389-8389/? I/MyIntentService: bind service: true 03-25 08:02:25.422 8389-8389/? I/MyIntentService: myintent service constructor.  03-25 08:02:25.422 8389-8389/? I/MyIntentService: on create.  03-25 08:02:25.432 8389-8389/? I/MyIntentService: say hello method: com.example.linux.intentservicetest.MyIntentService

點(diǎn)擊unbind:

03-25 08:02:28.486 8389-8389/? I/MyIntentService: on unbind: false, username: linux  03-25 08:02:28.490 8389-8389/? I/MyIntentService: on destroy.

前臺服務(wù)的使用

一、 在MainActivity中創(chuàng)建方法,啟動(dòng)前臺服務(wù):

// 前臺服務(wù)的使用  public void frontService(View view) {      Intent intent = new Intent();      intent.setClass(MainActivity.this, FrontService.class);      startService(intent);  }

二、 運(yùn)行結(jié)果: 在手機(jī)的通知欄中

android中IntentService如何使用

IntentService的原理分析

一、 intentService是繼承Service的抽象方法

public abstract class IntentService extends Service

二、 intentService包含的一些字段引用如下

private volatile Looper mServiceLooper;  private volatile ServiceHandler mServiceHandler;  private String mName;  private boolean mRedelivery;   private final class ServiceHandler extends Handler {      public ServiceHandler(Looper looper) {          super(looper);      }       @Override      public void handleMessage(Message msg) {          onHandleIntent((Intent)msg.obj);          stopSelf(msg.arg1);      }  }

二、 和service一樣在啟動(dòng)的時(shí)候,首先是執(zhí)行構(gòu)造方法,接著是onCreate方法,然后是onStartCommand方法,在onStartCommand中執(zhí)行了onStart方法(執(zhí)行流程在android基礎(chǔ)---->service的生命周期講過):

onCreate方法,開啟了一個(gè)線程,并且得到Looper與初始化了一個(gè)Handler

@Override  public void onCreate() {      // TODO: It would be nice to have an option to hold a partial wakelock      // during processing, and to have a static startService(Context, Intent)      // method that would launch the service & hand off a wakelock.       super.onCreate();      HandlerThread thread = new HandlerThread("IntentService[" + mName + "]");      thread.start();       mServiceLooper = thread.getLooper();      mServiceHandler = new ServiceHandler(mServiceLooper);  }

onStart方法,用上述的Handler發(fā)送信息

@Override  public void onStart(Intent intent, int startId) {      Message msg = mServiceHandler.obtainMessage();      msg.arg1 = startId;      msg.obj = intent;      mServiceHandler.sendMessage(msg);  }

onStartCommand方法,調(diào)用onStart方法,發(fā)送信息

@Override  public int onStartCommand(Intent intent, int flags, int startId) {      onStart(intent, startId);      return mRedelivery ? START_REDELIVER_INTENT : START_NOT_STICKY;  }


***上述的Handler得到信息,調(diào)用handleMessage方法,其中有stopSelf(msg.arg1)方法,停止了服務(wù):

三、 這里附上service類的兩個(gè)方法,源代碼是android6.0的

在Service中的onStart方法已經(jīng)被廢棄了:

/**   * @deprecated Implement {@link #onStartCommand(Intent, int, int)} instead.  */ @Deprecated  public void onStart(Intent intent, int startId) {  }

在onStartCommand的方法中

public int onStartCommand(Intent intent, int flags, int startId) {      onStart(intent, startId);      return mStartCompatibility ? START_STICKY_COMPATIBILITY : START_STICKY;  }

上述內(nèi)容就是android中IntentService如何使用,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁題目:android中IntentService如何使用
文章路徑:http://weahome.cn/article/jjpgij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部