Android下怎么管理两个APK应用程序在前后台来回切换?

xqhrs232 2011-01-08 04:54:53
Android下怎么管理两个APK应用程序在前后台来回切换?
...全文
1228 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqhrs232 2011-01-28
  • 打赏
  • 举报
回复
看来直接INTENT就可以啊!APK怎么被运行就看当时内存的情况了。如果内存不够,原来就被KILL掉,重新切到它就只有重新创建了,如果内存够就只是PAUSE一下,重新切回就RESUME就OK了。


看来用STARTACTIVITY就可以实现APK来回切换了!!!
xqhrs232 2011-01-15
  • 打赏
  • 举报
回复
Intent的Flags有何作用?

http://topic.csdn.net/u/20100625/19/c0f848c5-b6c4-4828-8d22-163fa8cc07ee.html?seed=636071572&r=71241178#r_71241178

在看ApiDemos中APP/Activity/Reorder Activities这个例子时,ReorderFour这个类中的intent对象加入FLAG_ACTIVITY_REORDER_TO_FRONT 这个Flag,但我把intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);这句话注释掉,也没发现有什么不同啊。

Java code
public class ReorderFour extends Activity {
@Override
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);

setContentView(R.layout.reorder_four);

Button twoButton = (Button) findViewById(R.id.reorder_second_to_front);
twoButton.setOnClickListener(mClickListener);
}

private final OnClickListener mClickListener = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
};
}

qthsrs232 2011-01-15
  • 打赏
  • 举报
回复
android.app.ActivityManager这个类值得好好研究一下。

1》ActivityManager.MemoryInfo-----内存情况
2》ActivityManager.ProcessErrorStateInfo
3》ActivityManager.RecentTaskInfo
4》ActivityManager.RunningAppProcessInfo
5》ActivityManager.RunningServiceInfo
6》ActivityManager.RunningTaskInfo
csuhanyong 2011-01-15
  • 打赏
  • 举报
回复
长按home键可以显示最近用过的apk(程序),你可以点击选择。
qthsrs232 2011-01-14
  • 打赏
  • 举报
回复
如果程序切到后台就有可能被系统KILL掉的话,那就没有前后台切换的概念,只有每次重新加载运行后台程序的新实例了。
xqhrs232 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qthsrs232 的回复:]
估计只能不断地运行startActivity了。


C/C++ code

Intent mIntent = new Intent(“android.intent.action.MAIN");

ComponentName comp = new ComponentName("com.installed.project1", "com.installed.project1.Acti……
[/Quote]
这样整就出现了一个问题,会运行APK的很多次实例,这样你要真正关闭很多次同一个APK的实例才能真正退出这个APK界面。在模拟器下就可以试出来。
xqhrs232 2011-01-14
  • 打赏
  • 举报
回复
长按ANDROID模拟器下的HOME键,可以出来任务管理器。重新点击其中一个,程序重新运行没有重新进行ONCREATE( )创建,应该可以表明ANDROID系统是支持多任务同时运行的。

但不知道如果没有HOME键的话,我们自己写代码怎么实现多任务的同时管理。
xqhrs232 2011-01-14
  • 打赏
  • 举报
回复
关于 任务进程切换的问题 怎样能切换的时候不关闭原任务
http://bbs.gfan.com/android-235191-1-1.html
xqhrs232 2011-01-13
  • 打赏
  • 举报
回复
觉得每时每刻只能有一个ACTIVITY在运行,可视ACTIVITY不响应状态改变,要运行后台ACTIVITY估计只能以服务的方式来进行。
xqhrs232 2011-01-09
  • 打赏
  • 举报
回复
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY.

This flag is not normally set by application code, but set for you by the system if this activity is being launched from history (longpress home key).

不知道可不可行,到时试一下!!!
yyy025025025 2011-01-09
  • 打赏
  • 举报
回复
Intent mIntent = new Intent(xxxx);
mIntent.setFlag(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
startActivity(mIntent);
xqhrs232 2011-01-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yyy025025025 的回复:]
Intent mIntent = new Intent(xxxx);
mIntent.setFlag(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
startActivity(mIntent);
[/Quote]

试了不行,这样还是会每次ONCREATE( )重新创建的.但模拟器的返回按钮切界面就不会重新创建啊!很奇怪,不知道这个是什么机制.但看消息老的界面其实已经DESTROY( )了.
xqhrs232 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuhuaijun 的回复:]
引用 4 楼 qthsrs232 的回复:

估计只能不断地运行startActivity了。

C/C++ code

Intent mIntent = new Intent(“android.intent.action.MAIN");

ComponentName comp = new ComponentName("com.installed.project1", "com.i……
[/Quote]

这个是每次重新创建,不好!!!甚至是错误的!!!
xqhrs232 2011-01-08
  • 打赏
  • 举报
回复
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()

看来的把ACTIVITY的上面的几个生命周期函数好好看看了,特别是他们的执行次序!!!
yuhuaijun 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qthsrs232 的回复:]

估计只能不断地运行startActivity了。

C/C++ code

Intent mIntent = new Intent(“android.intent.action.MAIN");

ComponentName comp = new ComponentName("com.installed.project1", "com.installed.project1.Activity……
[/Quote]

不知道LZ问的是操作还是程序设计,如果想做一个后台管理程序的话,用4楼就可以啦
xqhrs232 2011-01-08
  • 打赏
  • 举报
回复
发个消息给它?让APK A 执行PAUSE( )让APK B执行RESUME( )这样不知道能不能把B切到A的前台?
qthsrs232 2011-01-08
  • 打赏
  • 举报
回复
上面的方法都会调到ONCREATE( )函数----进行了重新创建---这样是不对的。

看来还不能按上面的方法来。重新创建的话又有一次很长时间的初始化,这样是不能接受的。
qthsrs232 2011-01-08
  • 打赏
  • 举报
回复
其实跟重新运行一个新的APK差不多-----针对已经安装在了系统里面的----要不然会弹出安装向导界面



Intent mIntent = new Intent( );
ComponentName comp = new ComponentName("com.installed.project1
", "com.installed.project1.ActivityMain
");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
startActivity(mIntent);
finish(); (如果不止1个Activity 在活动,就结束所有Activity)


qthsrs232 2011-01-08
  • 打赏
  • 举报
回复
估计只能不断地运行startActivity了。


Intent mIntent = new Intent(“android.intent.action.MAIN");

ComponentName comp = new ComponentName("com.installed.project1", "com.installed.project1.ActivityMain");

mIntent.setComponent(comp);

mIntent.addCategory("android.intent.category.LAUNCHER");

startActivity(mIntent);

finish();

xqhrs232 2011-01-08
  • 打赏
  • 举报
回复
用INTENT做了不行啊!
加载更多回复(2)

80,355

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧