您的位置:首页 > 移动开发 > Android开发

使用文件共享实现IPC

2016-11-28 15:35 323 查看
FourthActivity位于全局进程中android:process="com.zhoujian.android.romote"

FifthActivity位于默认进程中
默认进程名为包名:com.zhoujian.android

在FourthActivity把数据写入文件中,在FifthActivity中获取文件中的数据,以此实现进程间通信

需要的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

package com.zhoujian.android.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import com.zhoujian.android.R;
import com.zhoujian.android.bean.Person;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import butterknife.ButterKnife;
import butterknife.InjectView;

/**
* Created by zhoujian on 2016/11/28.
*/

public class FourthActivity extends Activity
{

@InjectView(R.id.bt_start)
Button mBtStart;

//option+command+k   对生命周期方法进行排序
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fourth);
ButterKnife.inject(this);
clickEvent();
//把数据写入文件中
writeToFile();
}

private void writeToFile()
{
new Thread()
{
@Override
public void run()
{
Person person = new Person(true,2,"zhoujian");
String path =  Environment.getExternalStorageDirectory().getPath()+"/cache/";
File f = new File(path);
if(!f.exists()){
f.mkdirs();
}
File cacheFile = new File(path+"person.txt");
ObjectOutputStream out=null;
try
{
out = new ObjectOutputStream(new FileOutputStream(cacheFile));
out.writeObject(person);
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}.start();
}

private void clickEvent()
{
mBtStart.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
startActivity(new Intent(FourthActivity.this,FifthActivity.class));
}
});
}

@Override
protected void onRestart()
{
super.onRestart();
}

@Override
protected void onStart()
{
super.onStart();
}

@Override
protected void onResume() {
super.onResume();
}

@Override
protected void onPause()
{
super.onPause();
}

@Override
protected void onStop()
{
super.onStop();
}

@Override
protected void onDestroy()
{
super.onDestroy();
}

}

package com.zhoujian.android.activity;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.zhoujian.android.R;
import com.zhoujian.android.bean.Person;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import butterknife.ButterKnife;
import butterknife.InjectView;

/**
* Created by zhoujian on 2016/11/28.
*/

public class FifthActivity extends Activity
{
public static final String TAG = "FifthActivity";
@InjectView(R.id.bt_start)
Button mBtStart;

//option+command+k   对生命周期方法进行排序
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fifth);
ButterKnife.inject(this);
clickEvent();
readFromFile();
}

private void readFromFile()
{
new Thread(new Runnable()
{
@Override
public void run()
{
Person person = null;
String path =  Environment.getExternalStorageDirectory().getPath()+"/cache/";
File cacheFile = new File(path+"person.txt");
if(cacheFile.exists())
{
ObjectInputStream in=null;
try
{
in = new ObjectInputStream(new FileInputStream(cacheFile));
person = (Person)in.readObject();
Log.e(TAG,"person==="+person.toString());
in.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}).start();
}

private void clickEvent()
{
mBtStart.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{

}
});
}

@Override
protected void onRestart() {
super.onRestart();
}

@Override
protected void onStart() {
super.onStart();
}

@Override
protected void onResume() {
super.onResume();
}

@Override
protected void onPause() {
super.onPause();
}

@Override
protected void onStop() {
super.onStop();
}

@Override
protected void onDestroy() {
super.onDestroy();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息