簡體   English   中英

意圖服務停止時如何在主要活動中啟動功能?

[英]How i start a function in main activity when intent service stop?

我創建具有警報服務的應用程序並在用戶設置Timepicker時播放警報mp3文件。警報服務類從帶有警報管理器的廣播接收器開始...我希望在停止警報服務返回主活動並啟動發送功能時藍牙數據。我該怎么做?我嘗試用第二個接收器但沒有工作...

public class AlarmService extends IntentService {


public String response="";

MediaPlayer mPlayer;

  public AlarmService() {
    super("AlarmService");
  }

  // Will be called asynchronously be Android
  @Override
  protected void onHandleIntent(Intent intent) {

      mPlayer = MediaPlayer.create(AlarmService.this, R.raw.alarm);
      mPlayer.start();


       String data="start";
       Intent intentsend=new Intent("update");//Send data to update UI
       intentsend.putExtra( "Alarmdata",data);
       sendBroadcast(intentsend);

  }

在主要活動中...

    @Override
public void onResume() {
    super.onResume();

     updateReceiver=new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intentsend) {
              //get extras, do some stuff
            String data1 = intentsend.getStringExtra("Alarmdata");
            if(data1=="start"){
            String data2="1";

         Toast.makeText(context, "Test updateReceiver!",Toast.LENGTH_LONG).show();

            try {
                sendData(data2);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            }

          }
      };
      IntentFilter updateIntentFilter=new IntentFilter("update");
      registerReceiver(updateReceiver, updateIntentFilter);

}

使用Handler和Messaging來實現您想要的一個簡單示例。

首先發送一條消息,說明您的工作已經完成

Message message = new Message();
    message.getData().putString("text",
            "exitedtask");
    Messenger messenger = new Messenger(
            completionHander);
    try {
        messenger.send(message);
    } catch (RemoteException e) {
        e.printStackTrace();
    }

然后使用處理程序處理應該發生的情況

protected Handler completionHander = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.getData().getString("text")
                    .equalsIgnoreCase("exitedtask")) {
                //do you work here
            }
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM