改进Python脚本与安卓应用通信的方法
在我的安卓项目中,我正在读取一个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;
}
补充:我心里有三个选择,
- 使用管道
- 套接字通信
- AIDL
那么哪个更好,为什么呢?
如果我走错了方向,请指导我。谢谢!
1 个回答
1
你可以试着用套接字(Sockets)来进行通信。套接字是一种让不同的程序可以互相交流的工具。想了解更多,可以看看这个链接:http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html