프로세스 관리

소개

이 문서에서는 작업 관리자라는 샘플 응용 프로그램에서 Tizen 응용 프로그램 및 SystemInfo API를 사용하는 방법을 배웁니다. 이 문서에서는 다음 방법을 보여줍니다.

  • 실행 중인 응용 프로그램의 목록 표시
  • 선택한 응용 프로그램 중지
  • 시스템 및 다른 응용 프로그램에서 사용하는 리소스 모니터링
  • 배터리 수준 결정

필수 요소

    작업 관리자 샘플 응용 프로그램을 사용하려면 config.xml 파일에서 tizen, systeminfo 및 응용 프로그램 기능을 활성화하고 jQuery를 버전 1.8.1로 업데이트하고 jQuery Mobile을 버전 1.2.0으로 업데이트해야 합니다.

실행 중인 응용 프로그램 목록

때때로 현재 실행 중인 응용 프로그램이 무엇인지 파악하는 데 사용자에게 유용할 수 있으므로 이 예에서는 장치에서 실행 중인 모든 응용 프로그램 목록을 얻는 방법을 보여줍니다. 이 목록을 얻으려면 Tizen Application API를 사용해야 합니다. 또한 이 API는 설치된 응용 프로그램 목록 가져오기, 응용 프로그램 수명 주기 취급 등 기타 응용 프로그램 관리 기능에 액세스하는 메서드를 제공합니다. Application API에 대한 자세한 내용은 Tizen Documentation에서 볼 수 있습니다. 실행 중인 응용 프로그램을 얻는 데 사용된 메서드는 다음과 같습니다.

void getAppsContext(ApplicationContextArraySuccessCallback successCallback,optional ErrorCallback? errorCallback);

샘플 응용 프로그램은 UL 목록을 사용하여 실행 중인 모든 응용 프로그램을 표시합니다. 다음 메서드는 목록 항목을 만드는 방법을 보여줍니다.

  var makeListItem = function(name, icon, id) {
          return "
  • "
    + "

    "
    + name
    + "

    touch to kill an app

    ";
    };

        목록 항목에 대한 html을 반환하는 간단한 메서드입니다. 응용 프로그램 이름, 응용 프로그램 아이콘의 경로 및 응용 프로그램의 contextId를 사용합니다. 실행 중인 모든 응용 프로그램의 목록을 가져오는 메서드는 다음과 같이 구현됩니다.

    getRunningAppsList : function() {
      //to be used as closure
      var that = this;
      var hMakeListItem = makeListItem;
      var hContainer = container;
      tizen.application.getAppsContext(function(contexts) {
              //empty the  container
              hContainer.html('');
              var appInfo, item;
              for( var i = 0; i < contexts.length; ++i) {
                     //get information about the application
                     appInfo = tizen.application.getAppInfo(contexts[i].appId);
                     //if it is application that should be shown (such as in the menus) make the item and append to the list
                     if(appInfo.show) {
                             item = hMakeListItem(appInfo.name, appInfo.iconPath, contexts[i].id);
                             hContainer.append(item);
                     }
              }
              hContainer.listview('refresh');
              //kill the selected application when the user touches the item
              hContainer.find('li').unbind().bind({
                     click : function(event) {
                             var id = this.getAttribute('data-app-id');
                             that.killApp(id);
                     }
              });
      }, function() {
              console.log("getAppsContext() error");
      });
    }

    이 메서드는 실행 중인 모든 응용 프로그램의 목록을 가져오지만 메뉴에 표시되는 응용 프로그램만을 표시할 목록에 포함시킵니다. 또한 사용자 선택을 처리하기 위한(즉, 선택한 응용 프로그램을 중지하기 위한) 메서드를 추가합니다.

    선택한 응용 프로그램 중지

    지정된 컨텍스트 id를 포함한 응용 프로그램을 중지하려면 다음 메서드를 사용할 수 있습니다.

    killApp : function(contextId) {
      //make closure to refresh the list of running applications
      var that = this;
      if(confirm("Are you sure to exit this app?")) {
              tizen.application.kill(contextId, function() {
                     that.getRunningAppsList();
              }, function() {
                     console.log("killApp() error");
              });
      }
    }

     

    TIP 이벤트 처리기에서 사용할 개체 기능을 전달하려면 클로저를 사용해야 합니다. 인터넷에서 쉽게 찾을 수 있는 많은 자습서에서 클로저에 대한 자세한 내용을 읽을 수 있습니다.

     

    시스템 성능 확인

    시스템 성능을 확인하려면 Tizen SystemInfo API를 사용할 수 있습니다. 이를 사용하면 CPU 사용량, 응용 프로그램에서 사용되는 메모리 및 배터리 수준과 같은 시스템에 대한 정보에 액세스할 수 있습니다. 이 예에서는 이 정보에 엑세스하고 사용자에게 표시하는 방법을 보여줍니다. 시스템 속성 값을 얻기 위해 사용하는 메서드는 다음과 같습니다.

    void getPropertyValue(PropertyId&nbsp;property,&nbsp;SystemInfoPropertySuccessCallbacksuccessCallback, optional ErrorCallback? errorCallback);

    이 메서드를 사용하기 전에 먼저 지정된 속성이 지원되는지 확인해야 합니다.

    boolean isSupported(PropertyId property);

    또한 속성 값의 모든 변경을 추적할 수 있는 기능은 중요하므로 SystemInfo API는 다음 메서드를 제공하여 속성 값 변경 수신기를 추가합니다.

    long addPropertyValueChangeListener(PropertyId&nbsp;property,SystemInfoPropertySuccessCallback&nbsp;successCallback, optional ErrorCallback?errorCallback, optional SystemInfoOptions? options);

    SystemInfo API에 대한 자세한 내용은 Tizen Documentation에서 볼 수 있습니다. 이 예에서는 HTML5 미터 태그를 사용하여 시스템 속성 값을 표시하고 다음 코드에서는 처리기를 프로세서, 저장소 및 전원 측정기로 가져가는 방법을 보여줍니다.

    init : function() {
      processor = document.getElementById('processor');
      storage = document.getElementById('storage');
      power = document.getElementById('power');
    }

      다음 메서드는 시스템 정보 값을 가져오고 변경 이벤트 수신기를 추가하는 데 사용됩니다.

    getSystemInfoValues : function() {
    //closures:
      var hProcessor = processor;
      var hStorage = storage;
      var hPower = power;
      var hSetCpuMeter = this.setCpuMeter;
      var hSetStorageMeter = this.setStorageMeter;
      var hSetPowerMeter = this.setPowerMeter;
      if(tizen.systeminfo.isSupported('Cpu')) {
              tizen.systeminfo.getPropertyValue('Cpu', function(property) {
                     hSetCpuMeter(property, hProcessor);
              });
              tizen.systeminfo.addPropertyValueChangeListener('Cpu', function(property) {
                     hSetCpuMeter(property, hProcessor);
              }, function() {
                     console.log('addPropertyValueChangeListener() error');
              });
      }
      if(tizen.systeminfo.isSupported('Storage')) {
              tizen.systeminfo.getPropertyValue('Storage', function(property) {
                     hSetStorageMeter(property, hStorage);
              });
              tizen.systeminfo.addPropertyValueChangeListener('Storage', function(property) {
                     hSetStorageMeter(property, hStorage);
              }, function() {
                     console.log('addPropertyValueChangeListener() error');
              });
      }
      if(tizen.systeminfo.isSupported('Power')) {
              tizen.systeminfo.getPropertyValue('Power', function(property) {
                     hSetPowerMeter(property, hPower);
              });
              tizen.systeminfo.addPropertyValueChangeListener('Power', function(property) {
                     hSetPowerMeter(property, hPower);
              }, function() {
                     console.log('addPropertyValueChangeListener() error');
              });
      }
    }

      검색된 속성 값으로 미터를 설정하는 데 다음 메서드가 사용됩니다.

     

    setCpuMeter : function(cpuInfo, cpuMeter) {
      tizen.logger.info(cpuInfo.load);
      cpuMeter.value = cpuInfo.load;
    },
    
    setStorageMeter : function(storageInfo, storageMeter) {
      if(storageInfo.length > 0) {
              var main = storageInfo[0];
              storageMeter.max = main.capacity;
              storageMeter.value = main.capacity - main.availableCapacity;
      }
    },
    
    setPowerMeter : function(powerInfo, powerMeter) {
      powerMeter.value = powerInfo.level;
    }

        표시된 모든 메서드에는 이 문서에 함께 제공되는 작업 관리자 샘플 응용 프로그램 내에 포함되어 있습니다.

    요약

    Tizen Device API는 응용 프로그램의 수명 주기를 관리하고 시스템 성능을 확인하기 위해 강력한 도구를 제공합니다. 작업 관리자와 같은 응용 프로그램 또는 시스템 성능 측정에 필요한 기타 모든 응용 프로그램을 작성하거나 응용 프로그램 상태 정보를 제공하는 데 쉽게 사용할 수 있습니다.   개정 기록

    0.9 초기 버전 2012-09-28
    1.0a 삼성경제연구소의 피드백 통합 후 2012-10-09

         

  • 첨부 파일: