改进Python脚本与安卓应用通信的方法

2 投票
1 回答
1573 浏览
提问于 2025-04-17 03:41

在我的安卓项目中,我正在读取一个xml文件,这个文件是由一个python脚本不断更新的。为了获取更新的数据,我一直在读取这个xml文件,每当python脚本更新了xml文件的数据,我就会在我的应用中使用这些数据。

但是现在出现了问题,因为python脚本和我的安卓项目都在不断访问同一个xml文件(我觉得这可能是并发问题),所以从xml文件中获取数据和通过python脚本写入数据都花费了很多时间。

所以,有没有什么简单的方法可以让python脚本和安卓应用直接沟通,这样我就可以避免使用xml文件,直接使用python脚本发送给我的数据?这样也能让我执行得更快。

我尝试了这个(这是我访问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. 套接字通信
  3. AIDL

那么哪个更好,为什么呢?

如果我走错了方向,请指导我。谢谢!

1 个回答

1

你可以试着用套接字(Sockets)来进行通信。套接字是一种让不同的程序可以互相交流的工具。想了解更多,可以看看这个链接:http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html

撰写回答