2014-09-16 2 views
0

백그라운드 작업을 사용하여 Windows Phone 8.1에서 채팅 응용 프로그램을 실시간으로 생성합니다. 앱은 백그라운드 작업을 등록하고 작업을 시작하며 정상적으로 작동합니다.전경 프로세스와 백그라운드 작업 간의 Windows 전화 메시지 교환

내 질문은? "전경 과정 및 배경 작업 사이에 일부 런타임 메시지를 교환하는 방법을 나는 동일한 작업을 수행하기 위해 API를 windows.applicationmodel.chat 을 본 적이

하지만이 을 사용하고 있습니다 마이크로 소프트의 API.

우리는 API의 우리의 자신의 세트를 사용하여 구현할 수 있습니까? 내 말은

는이 모든 메서드를 사용하여 전경 처리와 백그라운드 작업간에 런타임 데이터를 교환합니다.

답변

0

배경 오디오 응용 프로그램을 만들었고 MSDN의 아래에 언급 된 샘플 코드가 도움이되었습니다.

이것은 백그라운드 작업에서 오디오 파일을 실행하고 우리가 처리 할 이벤트를 알 수 있도록 도와줍니다. http://code.msdn.microsoft.com/windowsapps/BackgroundAudio-63bbc319

또한 포어 그라운드 작업에서 백그라운드 작업으로 데이터를 전달하는 방법과 그 반대로 데이터를 전달하는 방법에 대한 명확한 아이디어를 제공합니다.

예 : 이 응용 프로그램에서 : 배경 응용 프로그램이 포 그라운드 응용 프로그램에 메시지를 전송 선로를 변경 할 때마다 같은

ApplicationSettingsHelper.SaveSettingsValue(Constants.CurrentTrack, sender.CurrentTrackName); 

if (foregroundAppState == ForegroundAppStatus.Active) 
{ 
      //Message channel that can be used to send messages to foreground 
      ValueSet message = new ValueSet(); 
      message.Add(Constants.Trackchanged, sender.CurrentTrackName); 
      BackgroundMediaPlayer.SendMessageToForeground(message); 
} 

는 마찬가지로 배경 애플 리케이션은 전경 응용 프로그램에서 이벤트를 수신 할 수 있습니다

void BackgroundMediaPlayer_MessageReceivedFromForeground(object sender, MediaPlayerDataReceivedEventArgs e) 
    { 
     foreach (string key in e.Data.Keys) 
     { 
      switch (key.ToLower()) 
      { 
       case Constants.AppSuspended: 
        Debug.WriteLine("App suspending"); // App is suspended, you can save your task state at this point 
        foregroundAppState = ForegroundAppStatus.Suspended; 
        ApplicationSettingsHelper.SaveSettingsValue(Constants.CurrentTrack, Playlist.CurrentTrackName); 
        break; 
       case Constants.AppResumed: 
        Debug.WriteLine("App resuming"); // App is resumed, now subscribe to message channel 
        foregroundAppState = ForegroundAppStatus.Active; 
        break; 
       case Constants.StartPlayback: //Foreground App process has signalled that it is ready for playback 
        Debug.WriteLine("Starting Playback"); 
        StartPlayback(); 
        break; 
       case Constants.SkipNext: // User has chosen to skip track from app context. 
        Debug.WriteLine("Skipping to next"); 
        SkipToNext(); 
        break; 
       case Constants.SkipPrevious: // User has chosen to skip track from app context. 
        Debug.WriteLine("Skipping to previous"); 
        SkipToPrevious(); 
        break; 
      } 
     } 
    } 

나는 당신이하는 것이 좋습니다 더 잘 이해하기 위해 코드를 살펴보십시오. 그것은 나에게 시간이 좀 걸렸지 만, MSDN에서의 좋은 예입니다.

참고 : 이것은 Windows Phone 8.1 런타임 응용 프로그램 (Silverlight 제외)

+0

에게 많은 감사를 전합니다. 이게 내 애플 리케이션을 위해 일할 것이기를 바랍니다. – alka

+0

Hi Saqib, 이것은 백그라운드 미디어 앱에서 런타임 메시지가 미리 정의 된 것과 다릅니다. 하지만 여기서 백그라운드 작업에 텍스트 메시지를 보내야하고 그 반대도 마찬가지입니다. 이 메시지는 문자열 형식이며 매우 길 수도 있습니다. 감사. – alka

+0

@alka 메시지가 미리 정의되어 있지 않습니다. 일반적으로 메시지를 보내려면 "전경 메시지 보내기"앱과 같은 이벤트를 사용합니다. 메시지가 길면 격리 된 저장소를 사용하여 항상 데이터를 공유 할 수 있습니다. –

관련 문제