gpt4 book ai didi

android - BackUpAgentHelperClass 没有被调用

转载 作者:IT老高 更新时间:2023-10-28 22:10:26 25 4
gpt4 key购买 nike

我想使用扩展 BackupAgentHelper 的 MyBackUpAgent 类在 Android 中备份数据。我正在使用 SharedPreferences 来存储数据。

我的主要 Activity 代码是:

public class MainActivity extends Activity {
EditText inputtext;
TextView outputtext;
Button submit;
public static SharedPreferences sharedprefs;
static final String File_Name_Of_Prefrences ="godplay_preferences";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

init();
sharedprefs=getSharedPreferences(File_Name_Of_Prefrences,MODE_PRIVATE);
System.out.println("value="+sharedprefs.getString("Input",""));
outputtext.setText(sharedprefs.getString("Input",""));


submit.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
populateUI();
}
});
}

public void populateUI()
{
String savedinput=inputtext.getText().toString();
System.out.println("savedinput="+savedinput);
outputtext.setText(savedinput);
sharedprefs=getSharedPreferences(File_Name_Of_Prefrences,MODE_PRIVATE);
Editor editor=sharedprefs.edit();
editor.putString("Input",inputtext.getText().toString());
editor.commit();
requestBackup();
}

private void init() throws ClassCastException
{
inputtext=(EditText) findViewById(R.id.edtInputText);
outputtext=(TextView) findViewById(R.id.txtOutputText);
submit=(Button) findViewById(R.id.btnSubmit);
}

public void requestBackup() {
BackupManager bm = new BackupManager(getApplicationContext());
bm.dataChanged();
}
}

我的 MyBackUpAgent 类:

public class MyBackUpAgent extends BackupAgentHelper{
static final String PREFS_BACKUP_KEY = "backup";
String key_string="Hello World";

@Override
public void onCreate() {
System.out.println("********************");
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this,MainActivity.File_Name_Of_Prefrences);
addHelper(PREFS_BACKUP_KEY, helper);

}
}

我的 mainfest.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.godplay"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:restoreAnyVersion="false"
android:backupAgent=".MyBackUpAgent"

android:theme="@style/AppTheme" >
<activity
android:name="com.example.godplay.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>
<meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIhjloadYCTPUNo3yPsSX6LKmziiumZiQVlEEdBA" />
</application>
</manifest>

到目前为止,我已经尝试使用 bmgr 工具进行测试,使用 bmgr 工具可以成功执行。但是,在 Android 设备和模拟器上进行测试时,没有进行备份,也没有进行恢复。

另外,我已经在 Android 5.1、Android 4.2 和 Android 4.0 上进行了测试,但仍然没有运气。

在我看来,我的 MyBackUpAgent 类永远不会被调用,我已经在 MyBackUpAgent 类中尝试了断点并对其进行了验证。它永远不会被击中。

我做错了什么?

最佳答案

文档提到 Conditions For Backup Schedule:

  • 用户已在“设置”>“备份和重置”中启用设备上的备份。
  • 自上次备份以来已过去至少 24 小时。
  • 设备处于空闲状态并正在充电。
  • 设备已连接到 Wi-Fi 网络。如果设备从未连接到 wifi 网络,则不会发生自动备份。

如果使用 bmgr 工具备份对您有用,但在真实设备/模拟器上却没有,那么您可能不满足所有这些条件,因此永远不会进行备份。

关于android - BackUpAgentHelperClass 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29580589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com