android 文件存取可以跨进程吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 文件存取可以跨进程吗相关的知识,希望对你有一定的参考价值。
参考技术A 好像不可以 参考技术B Activity的跨进程访问与进程内访问略有不同。虽然它们都需要Intent对象,但跨进程访问并不需要指定Context对象和Activity的 Class对象,而需要指定的是要访问的Activity所对应的Action(一个字符串)。有些Activity还需要指定一个Uri(通过 Intent构造方法的第2个参数指定)。在android系统中有很多应用程序提供了可以跨进程访问的Activity,例如,下面的代码可以直接调用拨打电话的Activity。本回答被提问者采纳
如何在android中实现跨进程锁?
【中文标题】如何在android中实现跨进程锁?【英文标题】:How to implement cross process lock in android? 【发布时间】:2014-05-27 15:31:58 【问题描述】:我正在编写一个库项目供多个 APP 使用。而且由于某种原因,我必须为不同的APP做一个功能互斥,所以我需要一个跨进程锁。但据我所知,在android APP中只能写入内部存储中自己的文件目录,而外部存储是不可靠的,因为有些设备没有。所以文件锁似乎对我不适用,那么有没有其他方法可以实现跨进程锁呢?
谢谢~
【问题讨论】:
【参考方案1】:如果您不想(或不能)使用flock 或fcntl,也许您可以使用LocalServerSocket 来实现自旋锁。 例如:
public class SocketLock
public SocketLock(String name)
mName = name;
public final synchronized void tryLock() throws IOException
if (mServer == null)
mServer = new LocalServerSocket(mName);
else
throw new IllegalStateException("tryLock but has locked");
public final synchronized boolean timedLock(int ms)
long expiredTime = System.currentTimeMillis() + ms;
while (true)
if (System.currentTimeMillis() > expiredTime)
return false;
try
try
tryLock();
return true;
catch (IOException e)
// ignore the exception
Thread.sleep(10, 0);
catch (InterruptedException e)
continue;
public final synchronized void lock()
while (true)
try
try
tryLock();
return;
catch (IOException e)
// ignore the exception
Thread.sleep(10, 0);
catch (InterruptedException e)
continue;
public final synchronized void release()
if (mServer != null)
try
mServer.close();
catch (IOException e)
// ignore the exception
private final String mName;
private LocalServerSocket mServer;
【讨论】:
谢谢!我对此进行了简要测试,它似乎在我的手机上运行良好:Sony Xperia M (Cyanogenmod 12.1)以上是关于android 文件存取可以跨进程吗的主要内容,如果未能解决你的问题,请参考以下文章