ANDROID: 用户退出应用程序后将数据发送到 Parse SDK 数据库
ANDROID: Send data to Parse SDK database after user quits from application
我想在用户退出我的应用程序时发送数据来解析 SDK。
我可以通过解析 SDK 发送数据,但我希望它在用户退出我的应用程序后立即发送。
现在,我的代码如下所示:
Main Activity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_todo);
setTitle(R.string.create_todo);
alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
AlarmManager.INTERVAL_FIFTEEN_MINUTES, alarmIntent);
}
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyAsyncTask asyncTask = new MyAsyncTask();
asyncTask.execute(new String[]{});
}
class MyAsyncTask extends AsyncTask<String,Void,String>
{
@Override
protected String doInBackground(String... params) {
try {
ParseObject parseObject = new ParseObject("Todo");
parseObject.put("name", "abc");
parseObject.save();
}
catch(ParseException e)
{
}
return null;
}
}
}
我在 android.manifest 文件中注册了这样的接收器:
<receiver android:name=".utilities.AlarmBroadcastReciver">
<intent-filter>
<action android:name="Intent">
</action>
</intent-filter>
</receiver>
应用中只有这个 Activity 吗?
您有可能重写 Activity onStop() 方法。每次 Activity 以某种方式被隐藏时都会调用它 - 有一个新的 activity,用户返回到 "desktop",等等。您可以使用此方法发送数据。
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "ON STOP");
}
我不确定你应该在super.onStop()之前还是之后调用发送方法,试试吧。
我想在用户退出我的应用程序时发送数据来解析 SDK。
我可以通过解析 SDK 发送数据,但我希望它在用户退出我的应用程序后立即发送。
现在,我的代码如下所示:
Main Activity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_todo);
setTitle(R.string.create_todo);
alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
AlarmManager.INTERVAL_FIFTEEN_MINUTES, alarmIntent);
}
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyAsyncTask asyncTask = new MyAsyncTask();
asyncTask.execute(new String[]{});
}
class MyAsyncTask extends AsyncTask<String,Void,String>
{
@Override
protected String doInBackground(String... params) {
try {
ParseObject parseObject = new ParseObject("Todo");
parseObject.put("name", "abc");
parseObject.save();
}
catch(ParseException e)
{
}
return null;
}
}
}
我在 android.manifest 文件中注册了这样的接收器:
<receiver android:name=".utilities.AlarmBroadcastReciver">
<intent-filter>
<action android:name="Intent">
</action>
</intent-filter>
</receiver>
应用中只有这个 Activity 吗?
您有可能重写 Activity onStop() 方法。每次 Activity 以某种方式被隐藏时都会调用它 - 有一个新的 activity,用户返回到 "desktop",等等。您可以使用此方法发送数据。
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "ON STOP");
}
我不确定你应该在super.onStop()之前还是之后调用发送方法,试试吧。