service服务

service服务:   

service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。

  Service是在一段不定的时间运行在后台,不和用户交互应用组件。每个Service必须在manifest中 通过<service>来声明。可以通过contect.startservice和contect.bindserverice来启动。

  Service和其他的应用组件一样,运行在进程的主线程中。这就是说如果service需要很多耗时或者阻塞的操作,需要在其子线程中实现。


  public class PaymentService extends Service {

    
    private SharedPreferences mPrefs;
    private String mCurBookId;
    
    @Override
    public void onCreate() {
        super.onCreate();
        mPrefs = getSharedPreferences(MBookMonoApplication.SHAPRED_PREFERENCES_NAME, MODE_PRIVATE);
    }
    
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    
    @Override
    public void onStart(Intent intent, int startId) {
    mCurBookId = (String) intent.getSerializableExtra("book_id");
        TaskExecutor.executeTask(new Runnable() {
            public void run() {
                sendPaymentSMS();
            }
        });
        super.onStart(intent, startId);
    }
    
    private String getPaymentNumber () {
        return "5556";
    }
    
    public void sendPaymentSMS () {


        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode()) {
                    case Activity.RESULT_OK:
                        boolean flag = true;
                        if(flag) {
                            setCurrentBookAsPaid();
                        }
                        break;
                }
                unregisterReceiver(this);
                stopSelf();
            }
            
            private void setCurrentBookAsPaid() {
                mPrefs.edit().putInt("book_paid_"+mCurBookId, 1).commit();
            }
        }, new IntentFilter(MBookMonoApplication.SMS_SENT_BROADCAST));
        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(MBookMonoApplication.SMS_SENT_BROADCAST), 0);
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(getPaymentNumber(), null, "CXGPRSTC", sentPI, null);
    }


}


调用:

private void sendPaymentSMS (final Notifier successNotifier) {

   
    mPaymentReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode()) {
                    case Activity.RESULT_OK:
                        boolean flag = true;
                        if(flag) {
                            mPaid = true;
                            new AlertDialog.Builder(MBookMonoReaderActivity.this)
                            .setMessage("恭喜你!购买成功!")
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int whichButton) {
                                successNotifier.onNotified(1, 0, 0);
                                }
                            }).create().show();
                        }
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    new AlertDialog.Builder(MBookMonoReaderActivity.this)
                        .setMessage("购买失败!")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                           
                            }
                        }).create().show();
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                    new AlertDialog.Builder(MBookMonoReaderActivity.this)
                        .setMessage("没有服务,购买失败!")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                           
                            }
                        }).create().show();
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                    new AlertDialog.Builder(MBookMonoReaderActivity.this)
                        .setMessage("购买失败2!")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                           
                            }
                        }).create().show();
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                    new AlertDialog.Builder(MBookMonoReaderActivity.this)
                        .setMessage("请打开网络再次尝试!")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                           
                            }
                        }).create().show();
                        break;
                }
                unregisterReceiver(this);
                mPaymentReceiver = null;
            }
        };
        
        registerReceiver(mPaymentReceiver, new IntentFilter(MBookMonoApplication.SMS_SENT_BROADCAST));
    Intent intent = new Intent(this, PaymentService.class);
    intent.putExtra("book_id", mCurBookId);
    startService(intent);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值