我正在尝试在我的应用程序中创建一个"注销"功能.基本上,通过注销,应清除应用程序数据.我想要做的是在注销后,应用程序应该重新启动,以便可以再次输入凭据等.我遇到的问题是,当用户单击"注销"时,应用程序已经运行了3-4个活动,我不知道如何退回它们.我如何(模拟?)重新启动应用程序?
这是对这个问题的后续问题:
我试图从像这样的片段重新启动我的应用程序:
Toast.makeText(getActivity(), "Restarting app", Toast.LENGTH_SHORT).show();
Intent i = getActivity().getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getActivity().getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
getActivity().finish();
Run Code Online (Sandbox Code Playgroud)
代码什么也没做.这finish()是唯一有用的原因.如果我删除finish(),没有任何反应.这是为什么?
你好我的应用程序是这样工作的。
StartUpActivity 首先被调用,它做了很多初始化的事情,然后它启动了 TvbTabActivity (TabActivity),它有其他活动作为它的选项卡(例如 BrowseActivity)。
我看到的问题是 - 当使用任务杀手应用程序在 TvbTabActivity/Browse 选项卡上终止我的应用程序并再次重新启动该应用程序时,系统放弃正常流程(未生成 StartUpActivity),而是恢复直接上次可见的活动 (TvbTabActivity)。
如何强制 Android 始终首先运行 StartUpActivity,以便它初始化应用程序?
显然,当我的应用程序由于异常而自行崩溃时,我没有这个问题,哈哈,然后再次重新启动。
<application android:icon="@drawable/appicon"
android:label="@string/app_name" android:name="com.xyz.QPApplication"
android:debuggable="true">
<activity android:name=".activity.StartUpActivity" android:configChanges="locale|orientation"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".catalogue.BrowseActivity" android:configChanges="locale|orientation"
android:label="@string/app_name" android:screenOrientation="portrait"
android:launchMode="singleTop">
<intent-filter>
<action android:name="com.xyz.android.intent.action.BROWSE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".activity.TvbTabActivity" android:configChanges="locale|orientation"
android:screenOrientation="portrait" android:launchMode="singleTask">
</activity>
Run Code Online (Sandbox Code Playgroud)