лучший способ связи между скриптом Python и приложением для Android - PullRequest
2 голосов
/ 05 октября 2011

В моем проекте Android я читаю XML-файл, который постоянно обновляется одним скриптом Python. и для обновления данных я постоянно читаю файл xml и всякий раз, когда данные обновляются в файле xml скриптом python, я использовал это в своем приложении.

Но теперь проблема в том, что из-за сценария Python и моего проекта Android, постоянно обращающегося к одному XML-файлу (один ресурс, так что я думаю, что проблема с параллелизмом), требуется так много времени, чтобы получить данные из XML-файла и записать данные в XML-файл через Python. сценарий.

Итак, есть ли какой-нибудь простой способ связи между скриптом Python и приложением для Android, чтобы я избегал использования файла XML и напрямую использовал данные, отправленные мне скриптом Python? А также это дает мне более быстрое выполнение.

Я попробовал это, (Это мой код Android для доступа к XML-файлу)

public void getData() throws Exception {
try
{
    while(!isStop)
    {
        isStop=parseXmlData();          

    }   
 }
catch(Exception e)
{
    e.printStackTrace();
}
  }



private boolean parseXmlFile(){
    //get the factory
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    boolean flag=false;
    try {

        //Using factory get an instance of document builder
        DocumentBuilder db = dbf.newDocumentBuilder();
        //parse using builder to get DOM representation of the XML file

        File file=new File("/mnt/sdcard/xmldata.xml");
        FileInputStream fin=null;
        if(file.isFile())
            {
            try
            {
             fin=new FileInputStream(file);
            }catch(Exception e)
            {

            }

            }
        dom = db.parse(fin);
        flag =  parseDocument();

            // from this I am getting last xml value "stop" then it returns    
                      true and from while loop I am exited..

    }catch(ParserConfigurationException pce) {
        //pce.printStackTrace();
    }catch(SAXException se) {
        //se.printStackTrace();
    }catch(IOException ioe) {
        //ioe.printStackTrace();
    }
          return flag;
}

РЕДАКТИРОВАТЬ: На мой взгляд, у меня есть три варианта,

  1. Использование трубы
  2. Socket Communication
  3. AIDL

Так какой из них лучше и почему?

Если я иду не так, то, пожалуйста, ведите меня. Спасибо

1 Ответ

1 голос
/ 05 октября 2011

Вы можете попробовать использовать Sockets для общения.http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html

...