mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 13:59:29 +00:00
Merged FriendRefreshLoopRunnable and FriendListRefreshRunnable
This commit is contained in:
parent
4a5902973b
commit
e582053655
@ -4,16 +4,15 @@ package org.communiquons.android.comunic.client.data.runnables;
|
||||
import android.content.Context;
|
||||
|
||||
import org.communiquons.android.comunic.client.data.helpers.DatabaseHelper;
|
||||
import org.communiquons.android.comunic.client.data.helpers.FriendsListDbHelper;
|
||||
import org.communiquons.android.comunic.client.data.helpers.FriendsListHelper;
|
||||
import org.communiquons.android.comunic.client.data.models.Friend;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Automatically refresh friends list thread
|
||||
*
|
||||
* Goal this thread : this thread is killed when it is not required anymore to refresh the friends
|
||||
* list.
|
||||
*
|
||||
* However, it launches periodically another thread, FriendsListRefreshRunnable, which is never
|
||||
* killed, in order not to download errors.
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
* Created by pierre on 11/19/17.
|
||||
*/
|
||||
@ -22,40 +21,56 @@ public class FriendRefreshLoopRunnable implements Runnable {
|
||||
|
||||
private final Object object = new Object();
|
||||
|
||||
private Context context;
|
||||
private Context mContext;
|
||||
private DatabaseHelper dbHelper;
|
||||
|
||||
private boolean mStop = false;
|
||||
|
||||
public FriendRefreshLoopRunnable(Context context, DatabaseHelper dbHelper){
|
||||
this.context = context;
|
||||
this.mContext = context.getApplicationContext();
|
||||
this.dbHelper = dbHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perpetual loop that only stops when it download killed
|
||||
* Perpetual loop
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
synchronized (object) {
|
||||
|
||||
Thread thread;
|
||||
|
||||
while (true) {
|
||||
|
||||
//Create a refresh thread
|
||||
thread = new Thread(new FriendsListRefreshRunnable(context, dbHelper));
|
||||
thread.start();
|
||||
FriendsListHelper friendsListHelper = new FriendsListHelper(mContext);
|
||||
FriendsListDbHelper friendsDBHelper = new FriendsListDbHelper(dbHelper);
|
||||
|
||||
//Get the latest version of the list
|
||||
ArrayList<Friend> friendsList = friendsListHelper.download();
|
||||
|
||||
//Save it (only in case of success)
|
||||
if(friendsList != null)
|
||||
friendsDBHelper.update_list(friendsList);
|
||||
|
||||
try {
|
||||
thread.join();
|
||||
object.wait(15000);
|
||||
object.wait(500); //TODO: increase the value
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return; //Stop the refresh loop
|
||||
}
|
||||
|
||||
//Check if this thread has to be interrupted
|
||||
if(mStop)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Query this thread to stop
|
||||
*/
|
||||
public void interrupt(){
|
||||
mStop = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,57 +0,0 @@
|
||||
package org.communiquons.android.comunic.client.data.runnables;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import org.communiquons.android.comunic.client.data.helpers.DatabaseHelper;
|
||||
import org.communiquons.android.comunic.client.data.helpers.FriendsListDbHelper;
|
||||
import org.communiquons.android.comunic.client.data.helpers.FriendsListHelper;
|
||||
import org.communiquons.android.comunic.client.data.models.Friend;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Auto friends list refresh runnable
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
* Created by pierre on 11/19/17.
|
||||
*/
|
||||
|
||||
class FriendsListRefreshRunnable implements Runnable {
|
||||
|
||||
/**
|
||||
* This runnable requires a context object in order to connect to the API
|
||||
*
|
||||
* The context of the application (or of the activity)
|
||||
*/
|
||||
private Context mContext;
|
||||
|
||||
/**
|
||||
* Database object
|
||||
*/
|
||||
private DatabaseHelper dbHelper;
|
||||
|
||||
/**
|
||||
* Runnable constructor
|
||||
*
|
||||
* @param context The context of the application
|
||||
* @param dbHelper Database helper
|
||||
*/
|
||||
FriendsListRefreshRunnable(Context context, DatabaseHelper dbHelper){
|
||||
this.mContext = context;
|
||||
this.dbHelper = dbHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
FriendsListHelper friendsListHelper = new FriendsListHelper(mContext);
|
||||
FriendsListDbHelper friendsDBHelper = new FriendsListDbHelper(dbHelper);
|
||||
|
||||
//Get the latest version of the list
|
||||
ArrayList<Friend> friendsList = friendsListHelper.download();
|
||||
|
||||
//Save it (only in case of success)
|
||||
if(friendsList != null)
|
||||
friendsDBHelper.update_list(friendsList);
|
||||
}
|
||||
}
|
@ -72,7 +72,7 @@ public class MainActivity extends AppCompatActivity implements openConversationL
|
||||
/**
|
||||
* Friends list refresh thread
|
||||
*/
|
||||
private Thread friendsListRefreshThread;
|
||||
private FriendRefreshLoopRunnable friendsListRefreshRunnable;
|
||||
|
||||
/**
|
||||
* Database helper
|
||||
@ -144,9 +144,9 @@ public class MainActivity extends AppCompatActivity implements openConversationL
|
||||
}
|
||||
|
||||
//Refresh friends list through a thread
|
||||
friendsListRefreshThread = new Thread(
|
||||
new FriendRefreshLoopRunnable(getApplicationContext(), dbHelper));
|
||||
friendsListRefreshThread.start();
|
||||
friendsListRefreshRunnable = new FriendRefreshLoopRunnable(getApplicationContext(),
|
||||
dbHelper);
|
||||
new Thread(friendsListRefreshRunnable).start();
|
||||
|
||||
//Start notification thread
|
||||
Intent intent = new Intent(this, NotificationsService.class);
|
||||
@ -158,8 +158,8 @@ public class MainActivity extends AppCompatActivity implements openConversationL
|
||||
super.onStop();
|
||||
|
||||
//Stop the friends list refresh thread
|
||||
if(friendsListRefreshThread != null)
|
||||
friendsListRefreshThread.interrupt();
|
||||
if(friendsListRefreshRunnable != null)
|
||||
friendsListRefreshRunnable.interrupt();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user