快捷方式在Android中启动不正确的活动
我在我的申请中遇到了一个由两个主要活动组成的问题。最小(非)工作示例是ActivityA,它在onCreate方法中为ActivityB创建快捷方式 当从主屏幕启动ActivityB快捷方式时,ActivityB将启动,之后ActivityA将意外地全部启动!但是,只有当ActivityA未被销毁时,才会发生这种情况。如果您以某种方式破坏了活动(内存清理应用程序或类似的东西),则不会调用它 我相信我在申请中犯了严重的错误 这是活动A快捷方式在Android中启动不正确的活动,android,android-activity,Android,Android Activity,我在我的申请中遇到了一个由两个主要活动组成的问题。最小(非)工作示例是ActivityA,它在onCreate方法中为ActivityB创建快捷方式 当从主屏幕启动ActivityB快捷方式时,ActivityB将启动,之后ActivityA将意外地全部启动!但是,只有当ActivityA未被销毁时,才会发生这种情况。如果您以某种方式破坏了活动(内存清理应用程序或类似的东西),则不会调用它 我相信我在申请中犯了严重的错误 这是活动A package com.example.test; impo
package com.example.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class ActivityA extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent shortcutintent = new Intent();
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut");
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, R.drawable.ic_launcher);
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext(), ShortcutActivity.class));
shortcutintent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(shortcutintent);
}
}
这是活动B
package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(this, "Hey, I just started activity!", Toast.LENGTH_SHORT).show();
finish();
}
}
这是我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.test.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.test.ShortcutActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
</application>
</manifest>
不要对清单中的多个活动使用android.intent.action.MAIN
。如果希望应用程序在第一次启动后执行不同的操作,我建议保存一个。如果首选项不存在,请继续创建快捷方式。如果存在,则继续执行其他代码。另外,您不应该在onCreate()
中调用finish()
。如果要执行任务,为什么不创建另一个函数或AsyncTask
?无需启动并删除整个活动
我使用第二个活动的原因是,因为我希望第二个活动在点击快捷方式后执行简单的后台操作-没有比我示例中的toast复杂多少。是否有任何理由不使用两个主要活动?我是说,我认为这是完全正确的。在最初的应用程序中,我不是在onCreate中创建快捷方式,而是在按下一个按钮后,我只是简化了应用程序。此外,我不知道AsyncTask是如何应用的。