我有一个奇怪的问题,我想从我的应用程序启动到市场-我正在做以下工作。
Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(
"market://details?id=" + activity.getPackageName()));
try {
activity.startActivity(marketIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(activity, "Could not launch market", Toast.LENGTH_LONG).show();
}
但是当用户可以再次按下Open
时,当他们这样做时,我得到:
08-22 15:18:37.510: INFO/ActivityManager(260): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.xyz.appname cmp=com.xyz.appname/.mainapp } from pid 22853
08-22 15:18:37.590: INFO/ActivityManager(260): Starting: Intent { cmp=com.xyz.appname/.secondactivity } from pid 25735
08-22 15:18:37.590: WARN/InputManagerService(260): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@2b49a938
,它永远不会重新打开应用程序,它们只是停留在那里-点击反击是有效的。跟踪代码,警告来自mainapp
:
Intent tabActivity = new Intent();
tabActivity.setClass(this, secondactivity.class);
startActivity(tabActivity);
this.finish();
这看起来肯定是重启方式的问题——你的最后一点代码是正确的。
这个标志看起来像是你需要告诉Android从历史堆栈中取出现有的活动并重新使用它:
FLAG_ACTIVITY_SINGLE_TOP
或者(如果你想重新启动而不是恢复),也许你可以暗示Android在你继续前进后回收活动,通过使用这个与你的意图:
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);