为了以后写代码方便,把service代码做个笔记
1.针对startservice
2.启动线程处理事务
Androirmanitfest.xml添加如下内容:
<service
android:name=".BackgroundService">
<intent-filter>
<action android:name="实际处理的action"/>
</intent-filter>
</service>
source code:
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
import android.util.Log;
import android.widget.Toast;
public class BackgroundService extends Service {
private static final String TAG = "BackgroundService";
private ServiceHandler mServiceHandler;
private Looper mServiceLooper;
public Handler mToastHandler = new Handler();
public static final String ACTION_START_FROM_ACTIVITY =
"com.mobi.bootttest.ACTION_START_FROM_ACTIVITY";
public static final String ACTION_START_FROM_RECEIVER =
"com.mobi.bootttest.ACTION_START_FROM_RECEIVER";
public void onCreate() {
Log.d(TAG,"Backgroundservice creating!!!");
HandlerThread thread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);
}
public int onStartCommand(Intent intent, int flags, int startId) {
Message msg = mServiceHandler.obtainMessage();
msg.arg1 = startId;
msg.obj = intent;
mServiceHandler.sendMessage(msg);
return Service.START_NOT_STICKY;
}
public IBinder onBind(Intent intent) {
return null;
}
public void onDestory() {
mServiceLooper.quit();
}
private final class ServiceHandler extends Handler {
public ServiceHandler(Looper looper) {
super(looper);
}
public void handleMessage(Message msg) {
Intent intent = (Intent) msg.obj;
if (intent != null) {
if(ACTION_START_FROM_ACTIVITY.equals(intent.getAction())) {
Log.d(TAG, "Backgroundservice started from activity");
mToastHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(BackgroundService.this,
"Backgroundservice started from activity",
Toast.LENGTH_LONG).show();
}
});
}
if(ACTION_START_FROM_RECEIVER.equals(intent.getAction())) {
Log.d(TAG, "Backgroundservice started from Service");
mToastHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(BackgroundService.this,
"Backgroundservice started from Service",
Toast.LENGTH_LONG).show();
}
});
}
}
}
}
}