如何避免两次启动 Android 应用程序,从 Eclipse 运行到真实设备

Posted

技术标签:

【中文标题】如何避免两次启动 Android 应用程序,从 Eclipse 运行到真实设备【英文标题】:How to Avoid Launching the Android Application Twice ,Running from Eclipse to real device 【发布时间】:2015-12-21 21:36:18 【问题描述】:

我正在从 eclipse 运行应用程序,它被启动了两次:第一次启动应用程序,然后在几秒钟后再次重新启动

我的应用启动画面--->>主要活动(都打开两次)。

我已经尝试在清单文件中添加 android:launchMode="singleInstance",但没有成功。

我已经尝试了 3 个不同的应用程序,我的 eclipse 仍然在我的 Kitkat ,棒棒糖真实设备中打开两次(创建了一个也打开两次的新项目)

编辑 1:

尝试在清单文件中添加这一行,但没有成功-android:launchMode="singleTop"

请告诉我如何解决这个问题。

清单文件:

<application
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:launchMode="singleInstance"
        android:theme="@style/AppTheme2" >


        <activity
            android:name=".Start"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
</application>

我的启动Activity.java

public class Start extends Activity



        SessionManagerFor_Signin session;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);


        // Session class instance
        session = new SessionManagerFor_Signin(getApplicationContext());

         // Remove the Title Bar
       requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.start);


        ImageView Image1=(ImageView)findViewById(R.id.imageView1);

        //Animation Bottom to Top        
        TranslateAnimation animation2 = new TranslateAnimation(0.0f, 0.0f,400.0f, 0.0f); 

            animation2.setDuration(1000);  
            animation2.setFillAfter(false); 
            Image1.startAnimation(animation2);


        Thread timer = new Thread()
        

        @Override
        public void run()

        
            try 
                sleep(3000);


             
            catch (InterruptedException e) 
            
            e.printStackTrace();    

            
            finally
            
                session.checkLogin();
                finish();

            

        
    ;
    timer.start();


    //For Full Action bar Color Starts
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
                setTranslucentStatus(true);
            

            SystemBarTintManager tintManager = new SystemBarTintManager(this);
            tintManager.setStatusBarTintEnabled(true);
            tintManager.setStatusBarTintResource(R.color.FUllStartColor);

    //For Full Action bar Color Ends here           

    @TargetApi(19) 
    private void setTranslucentStatus(boolean on) 
        Window win = getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
        if (on) 
            winParams.flags |= bits;
         else 
            winParams.flags &= ~bits;
        
        win.setAttributes(winParams);
    

【问题讨论】:

我已经尝试了 3 个不同的应用程序,我的 eclipse 仍然在我的真实设备 Kitkat 中打开两次,棒棒糖(还创建了一个也打开两次的新项目) 你有什么解决办法吗?我也面临同样的问题。请帮我解决这个问题。 【参考方案1】:

仅在您的一项活动中应用意图过滤器。从 MainActivity 中删除...

<application
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:launchMode="singleInstance"
        android:theme="@style/AppTheme2" >


        <activity
            android:name=".Start"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" >

        </activity>
</application>

【讨论】:

能否请您发布您的开始活动代码 sn-p 我添加了我的开始活动 这可能是日食问题? 是的,我尝试了 3 个应用程序打开 2 次,为什么?从eclipse运行到真实设备【参考方案2】:

从以下两个活动之一中删除此

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

此意图过滤器向 Android 指示哪个是 Main Activity,您应该只有一个。

【讨论】:

我已经尝试了 3 个不同的应用程序从我的 eclipse 中仍然在我的真实设备 Kitkat 中打开两次,棒棒糖(还创建了一个也打开两次的新项目)但在 jellybean 设备中运行良好。【参考方案3】:

尝试将清单中的 launchMode "singleTop" 添加到您的活动中。

<activity
  android:name="MyActivity"
  android:launchMode="singleTop"
  ... >

【讨论】:

【参考方案4】:

试试这个:

android:launchMode="singleTask"

也许这会起作用。 如果它不起作用,请重新安装eclipse。

【讨论】:

我要重新安装eclipse或者Sdk?【参考方案5】:

将以下内容应用到您的初始屏幕活动,然后清理项目并再次运行..

尝试使用完整的包名称在清单文件中注册活动。

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

【讨论】:

这可能是 Eclipse 问题? 你在真机上签到了吗?? 是的,我在真机上测试过,两次打开

以上是关于如何避免两次启动 Android 应用程序,从 Eclipse 运行到真实设备的主要内容,如果未能解决你的问题,请参考以下文章

Android pushwoosh:从通知(带触发器)启动应用程序时,如何避免显示“使用完成操作”对话框

在“点击,点击”事件触发两次。如何避免?

从锁定屏幕启动时,Android Activity 会打开两次

如何避免多次调用同一个函数?

如何避免两次编写 SQL Server 查询以避免重复?

避免双击操作栏中的项目