【发布时间】:2016-02-25 08:07:24
【问题描述】:
我正在使用共享首选项来保存我的应用程序的状态,以便能够在我的 Android 手机重新启动之前进入最后一个活动。我的目的是当 Android 系统管理内存并推出我的应用程序时,当用户重新进入应用程序时,他们将到达我的应用程序的最后一个 Activity 和屏幕。
这是我的一些代码:
首先是 DispatcherActivity.java :
> package com.lm.rosary;
>
> import android.app.Activity; import android.content.Intent; import
> android.content.SharedPreferences; import android.os.Bundle;
>
>
> public class DispatcherActivity 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", Jfp1.class.getName()));
> } catch(ClassNotFoundException ex) {
> activityClass = Jfp1.class;
> }
>
> startActivity(new Intent(this, activityClass));
> } }
第二个是我的示例活动 ( Jfp1.java ),我希望用户在手机重新启动或重新启动时返回此屏幕。 Jfp1.java:
> import android.content.SharedPreferences; import
> android.content.SharedPreferences.Editor;
>
>
> public class Jfp1 extends Activity implements OnClickListener { ....
>
> SharedPreferences prefs;
> SharedPreferences.Editor editor;
> .... @Override protected void onPause() { super.onPause();
> SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
> Editor editor = prefs.edit();
> editor.putString("lastActivity", getClass().getName());
> editor.commit(); }
我的应用程序,从 MainActivity 到 Mysterytopray 和 Jfp1 类。 DispatcherActivity.java 在单独的类中。
和往常一样,我的第三个清单:
> <activity
> android:name=".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.lm.rosary.DispatcherActivity"
> android:label="@string/app_name" >
> <intent-filter>
> <action android:name="android.intent.action.MAIN" />
> </intent-filter>
> </activity>
>
> <activity
> android:name="com.lm.rosary.Jfp1"
> android:label="@string/app_name" >
> </activity>
我在 Jfp1 屏幕上,我重新启动了 HP。但惠普重启后,我点击了我的应用程序图标,但 Jfp1 活动没有首先出现。首先出现的主要活动。但实际上,我希望它回到最后一个 Activity,即 Jfp1.java。
我对 Android 没有经验,所以请任何人给我一些建议并更正我的编码。非常感谢。
【问题讨论】:
-
您的具体用例是什么?这可能会在将来导致更多问题,特别是如果您的 Dispatcher 跳转到屏幕,该屏幕可能是流程的一部分,并假设后台堆栈包含流程中的先前屏幕......并且如果您跳转到的活动从您的调度员开始确实是深度= 1,那么为什么要执行跳转呢? UX 应该为活动提供直接的路径……这些只是建议,了解您的确切用例会有所帮助。
标签: android android-activity sharedpreferences dispatcher android-reboot