我做了一个使用后台服务的应用程序,当用户点击特定的按钮(开始按钮)时,用户可以通过重启该应用程序并再次打开它来停止应用程序任务。然后用户可以通过点击停止按钮来停止应用程序。
我使用这个代码片段让应用程序关闭它的UI并返回到主屏幕,在此之前设置开始按钮在禁用模式…
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
不幸的是,当我再次打开我的应用程序时,我从不包含开始按钮和停止按钮的主活动开始,当我滑动到包含按钮的第二个活动时,我发现启动按钮启用了,即后台服务的前一个任务丢失了?? ?!!
有人能给我提供解决方案吗?
每次打开应用程序时,这些按钮都是默认启用的(除了那些从一开始就禁用的按钮)。
所以你需要保存这个状态来保持它的状态。在这里是如何保持和恢复状态。
你必须看看Android应用程序的生命周期,当你的应用程序进入后台,它会得到状态onPause()
和后来的onStop()
,你想要的是保存你的应用程序状态供以后使用,看看这个线程:在Android中保存活动状态我认为最重要的答案是你想要做的。
你必须先保存按钮的状态,然后再加载状态
您可以使用SharedPreferences来存储所需的活动。然后在MainActivity启动后检查它,以决定是否更改为新活动
//check when start app
public class MainActivity extends Activity{
public static SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
sharedpreferences = getSharedPreferences("WantedActivity", Context.MODE_PRIVATE);
if (sharedPreferences.contains("SavedActivityName"))
{
if(sharedPreferences.getString("SavedActivityName","").equals( "ActivityName"))
{
Intent intent = new Intent(getApplicationContext(), ActivityName.class);
startActivity(intent);
}
}
}
}
//save wanted activity
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("SavedActivityName", "ActivityName");
editor.commit();