如何避免两次启动 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:从通知(带触发器)启动应用程序时,如何避免显示“使用完成操作”对话框