【问题标题】:how to avoid click on android shortcut create new app instance and kill the old one如何避免点击android快捷方式创建新的应用程序实例并杀死旧的
【发布时间】:2013-08-29 13:30:06
【问题描述】:

我已经通过以下代码创建了一个 android 快捷方式

Intent 快捷方式 = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");快捷方式.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name)); 意图快捷方式Intent = new Intent(); shortcutIntent.setClassName(this,MainActivity.class.getName()); 快捷方式.putExtra(意图.EXTRA_SHORTCUT_INTENT,快捷方式意图); 快捷方式.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 快捷方式.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher); 快捷方式.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); 发送广播(快捷方式);

当我打开我的应用程序,最后在一些像 BActivity 这样的 Activity 中,然后我切换到主屏幕并单击快捷方式,应用程序像上面的代码一样来到 MainActivity,我可以避免这种情况并让应用程序如果它已经创建,则进入前台?

【问题讨论】:

标签: android shortcut launchmode


【解决方案1】:

我终于找到了正确的方法,总而言之,这是android中的一个错误,可能会出现解决方法

if(!isTaskRoot()){
    finish();
    return;
}

在您的 LaucherClass 的 onCreate 中添加上面的代码

【讨论】:

    【解决方案2】:

    您可以使用共享首选项来做到这一点。

    因此,在您希望自动重新启动的每个活动中:

    @Override
    protected void onPause() {
      super.onPause();
      SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
      Editor editor = prefs.edit();
      editor.putString("lastActivity", getClass().getName());
      editor.commit();
    

    }

    还有一个类似于下面的 Dispatcher 活动:

    public class Dispatcher extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        Class<?> activityClass;
    
        try {
            SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
            activityClass = Class.forName(
                prefs.getString("lastActivity", Activity1.class.getName()));
        } catch(ClassNotFoundException ex) {
            activityClass = Activity1.class;
        }
    
        startActivity(new Intent(this, activityClass));
    }
    

    }

    【讨论】:

    • 谢谢你 Arun,但我仍然想知道是否有更方便的方法来做到这一点,因为当你点击应用程序抽屉中的图标时,应用程序会随着存在的活动堆栈进入前台,什么我想做的是一样的,你提供的解决方案会破坏我避免做的现有活动堆栈,我认为一些activity_flag可能会这样做,但我通读了文档并发现很少
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多