Java 类android.support.annotation.BinderThread 实例源码
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
private BookmarkFolder loadBookmarks(final BookmarkId folderId) {
final LinkedBlockingQueue<BookmarkFolder> resultQueue = new LinkedBlockingQueue<>(1);
//A reference of BookmarkLoader is needed in binder thread to
//prevent it from being garbage collected.
final BookmarkLoader bookmarkLoader = new BookmarkLoader();
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
bookmarkLoader.initialize(mContext, folderId, new BookmarkLoaderCallback() {
@Override
public void onBookmarksLoaded(BookmarkFolder folder) {
resultQueue.add(folder);
}
});
}
});
try {
return resultQueue.take();
} catch (InterruptedException e) {
return null;
}
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
@Override
public int getCount() {
//On some Sony devices, getCount() could be called before onDatasetChanged()
//returns. If it happens, refresh widget until the bookmarks are all loaded.
if (mCurrentFolder == null || !mPreferences.getString(PREF_CURRENT_FOLDER, "")
.equals(mCurrentFolder.folder.id.toString())) {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
refreshWidget();
}
});
}
if (mCurrentFolder == null) {
return 0;
}
return mCurrentFolder.children.size() + (mCurrentFolder.parent != null ? 1 : 0);
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
private BookmarkFolder loadBookmarks(final BookmarkId folderId) {
final LinkedBlockingQueue<BookmarkFolder> resultQueue = new LinkedBlockingQueue<>(1);
//A reference of BookmarkLoader is needed in binder thread to
//prevent it from being garbage collected.
final BookmarkLoader bookmarkLoader = new BookmarkLoader();
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
bookmarkLoader.initialize(mContext, folderId, new BookmarkLoaderCallback() {
@Override
public void onBookmarksLoaded(BookmarkFolder folder) {
resultQueue.add(folder);
}
});
}
});
try {
return resultQueue.take();
} catch (InterruptedException e) {
return null;
}
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public int getCount() {
//On some Sony devices, getCount() could be called before onDatasetChanged()
//returns. If it happens, refresh widget until the bookmarks are all loaded.
if (mCurrentFolder == null || !mPreferences.getString(PREF_CURRENT_FOLDER, "")
.equals(mCurrentFolder.folder.id.toString())) {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
refreshWidget();
}
});
}
if (mCurrentFolder == null) {
return 0;
}
return mCurrentFolder.children.size() + (mCurrentFolder.parent != null ? 1 : 0);
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
private BookmarkFolder loadBookmarks(final BookmarkId folderId) {
final LinkedBlockingQueue<BookmarkFolder> resultQueue = new LinkedBlockingQueue<>(1);
//A reference of BookmarkLoader is needed in binder thread to
//prevent it from being garbage collected.
final BookmarkLoader bookmarkLoader = new BookmarkLoader();
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
bookmarkLoader.initialize(mContext, folderId, new BookmarkLoaderCallback() {
@Override
public void onBookmarksLoaded(BookmarkFolder folder) {
resultQueue.add(folder);
}
});
}
});
try {
return resultQueue.take();
} catch (InterruptedException e) {
return null;
}
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
private Bookmark getBookmarkForPosition(int position) {
if (mCurrentFolder == null) return null;
// The position 0 is saved for an entry of the current folder used to go up.
// This is not the case when the current node has no parent (it's the root node).
if (mCurrentFolder.parent != null) {
if (position == 0) return mCurrentFolder.folder;
position--;
}
// This is necessary because when Chrome is cleared from Application settings, Bookmark
// widget will not be notified and it causes inconsistency between model and widget.
// Then if the widget is quickly scrolled down, this has an IndexOutOfBound error.
if (mCurrentFolder.children.size() <= position) return null;
return mCurrentFolder.children.get(position);
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public int getCount() {
//On some Sony devices, getCount() could be called before onDatasetChanged()
//returns. If it happens, refresh widget until the bookmarks are all loaded.
if (mCurrentFolder == null || !mPreferences.getString(PREF_CURRENT_FOLDER, "")
.equals(mCurrentFolder.folder.id.toString())) {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
refreshWidget();
}
});
}
if (mCurrentFolder == null) {
return 0;
}
return mCurrentFolder.children.size() + (mCurrentFolder.parent != null ? 1 : 0);
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
@Override
public void onDestroy() {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
if (mBookmarkModel != null) mBookmarkModel.destroy();
}
});
deleteWidgetState(mContext, mWidgetId);
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
private void updateBookmarkList() {
BookmarkId folderId = BookmarkId
.getBookmarkIdFromString(mPreferences.getString(PREF_CURRENT_FOLDER, null));
mCurrentFolder = loadBookmarks(folderId);
mPreferences.edit().putString(PREF_CURRENT_FOLDER, mCurrentFolder.folder.id.toString())
.apply();
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
private Bookmark getBookmarkForPosition(int position) {
if (mCurrentFolder == null) return null;
// The position 0 is saved for an entry of the current folder used to go up.
// This is not the case when the current node has no parent (it's the root node).
if (mCurrentFolder.parent != null) {
if (position == 0) return mCurrentFolder.folder;
position--;
}
return mCurrentFolder.children.get(position);
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public void onDestroy() {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
if (mBookmarkModel != null) mBookmarkModel.destroy();
}
});
deleteWidgetState(mContext, mWidgetId);
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
private void updateBookmarkList() {
BookmarkId folderId = BookmarkId
.getBookmarkIdFromString(mPreferences.getString(PREF_CURRENT_FOLDER, null));
mCurrentFolder = loadBookmarks(folderId);
mPreferences.edit().putString(PREF_CURRENT_FOLDER, mCurrentFolder.folder.id.toString())
.apply();
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
private Bookmark getBookmarkForPosition(int position) {
if (mCurrentFolder == null) return null;
// The position 0 is saved for an entry of the current folder used to go up.
// This is not the case when the current node has no parent (it's the root node).
if (mCurrentFolder.parent != null) {
if (position == 0) return mCurrentFolder.folder;
position--;
}
return mCurrentFolder.children.get(position);
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public void onDestroy() {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
if (mBookmarkModel != null) mBookmarkModel.destroy();
}
});
deleteWidgetState(mContext, mWidgetId);
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
private void updateBookmarkList() {
BookmarkId folderId = BookmarkId
.getBookmarkIdFromString(mPreferences.getString(PREF_CURRENT_FOLDER, null));
mCurrentFolder = loadBookmarks(folderId);
mPreferences.edit().putString(PREF_CURRENT_FOLDER, mCurrentFolder.folder.id.toString())
.apply();
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public long getItemId(int position) {
Bookmark bookmark = getBookmarkForPosition(position);
if (bookmark == null) return BookmarkId.INVALID_FOLDER_ID;
return bookmark.id.getId();
}
项目:flitchio-sdk
文件:FlitchioController.java
@Override
@BinderThread
public void onButtonEvent(ButtonEvent event) throws RemoteException {
synchronized (lockListener) {
if (eventListenerThreadHandler != null) {
eventListenerThreadHandler.post(new ButtonEventRunnable(event));
}
}
}
项目:flitchio-sdk
文件:FlitchioController.java
@Override
@BinderThread
public void onJoystickEvent(JoystickEvent event) throws RemoteException {
// TODO link the chain of events in order to receive ButtonEvents for Dpad only if the
// corresponding joystick has been ignored
synchronized (lockListener) {
if (eventListenerThreadHandler != null) {
eventListenerThreadHandler.post(new JoystickEventRunnable(event));
}
}
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
@Override
public void onDataSetChanged() {
updateBookmarkList();
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
@Override
public int getViewTypeCount() {
return 2;
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
@Override
public boolean hasStableIds() {
return false;
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
@Override
public long getItemId(int position) {
return getBookmarkForPosition(position).id.getId();
}
项目:chromium-for-android-56-debug-video
文件:BookmarkWidgetService.java
@BinderThread
@Override
public RemoteViews getLoadingView() {
return new RemoteViews(mContext.getPackageName(), R.layout.bookmark_widget_item);
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public void onDataSetChanged() {
updateBookmarkList();
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public int getViewTypeCount() {
return 2;
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public boolean hasStableIds() {
return false;
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public long getItemId(int position) {
return getBookmarkForPosition(position).id.getId();
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public RemoteViews getLoadingView() {
return new RemoteViews(mContext.getPackageName(), R.layout.bookmark_widget_item);
}
项目:AndroidChromium
文件:BookmarkWidgetService.java
@BinderThread
@Override
public RemoteViews getViewAt(int position) {
if (mCurrentFolder == null) {
Log.w(TAG, "No current folder data available.");
return null;
}
Bookmark bookmark = getBookmarkForPosition(position);
if (bookmark == null) {
Log.w(TAG, "Couldn't get bookmark for position %d", position);
return null;
}
String title = bookmark.title;
String url = bookmark.url;
BookmarkId id = (bookmark == mCurrentFolder.folder)
? mCurrentFolder.parent.id
: bookmark.id;
RemoteViews views = new RemoteViews(mContext.getPackageName(),
R.layout.bookmark_widget_item);
// Set the title of the bookmark. Use the url as a backup.
views.setTextViewText(R.id.title, TextUtils.isEmpty(title) ? url : title);
if (bookmark == mCurrentFolder.folder) {
views.setImageViewResource(R.id.favicon, R.drawable.back_normal);
} else if (bookmark.isFolder) {
views.setImageViewResource(R.id.favicon, R.drawable.bookmark_folder);
} else {
views.setImageViewBitmap(R.id.favicon, bookmark.favicon);
}
Intent fillIn;
if (bookmark.isFolder) {
fillIn = new Intent(getChangeFolderAction(mContext))
.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mWidgetId)
.putExtra(EXTRA_FOLDER_ID, id.toString());
} else {
fillIn = new Intent(Intent.ACTION_VIEW);
if (!TextUtils.isEmpty(url)) {
fillIn = fillIn.addCategory(Intent.CATEGORY_BROWSABLE)
.setData(Uri.parse(url));
} else {
fillIn = fillIn.addCategory(Intent.CATEGORY_LAUNCHER);
}
}
views.setOnClickFillInIntent(R.id.list_item, fillIn);
return views;
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public void onDataSetChanged() {
updateBookmarkList();
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public int getViewTypeCount() {
return 2;
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public boolean hasStableIds() {
return false;
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public RemoteViews getLoadingView() {
return new RemoteViews(mContext.getPackageName(), R.layout.bookmark_widget_item);
}
项目:365browser
文件:BookmarkWidgetService.java
@BinderThread
@Override
public RemoteViews getViewAt(int position) {
if (mCurrentFolder == null) {
Log.w(TAG, "No current folder data available.");
return null;
}
Bookmark bookmark = getBookmarkForPosition(position);
if (bookmark == null) {
Log.w(TAG, "Couldn't get bookmark for position %d", position);
return null;
}
String title = bookmark.title;
String url = bookmark.url;
BookmarkId id = (bookmark == mCurrentFolder.folder)
? mCurrentFolder.parent.id
: bookmark.id;
RemoteViews views = new RemoteViews(mContext.getPackageName(),
R.layout.bookmark_widget_item);
// Set the title of the bookmark. Use the url as a backup.
views.setTextViewText(R.id.title, TextUtils.isEmpty(title) ? url : title);
if (bookmark == mCurrentFolder.folder) {
views.setImageViewResource(R.id.favicon, R.drawable.back_normal);
} else if (bookmark.isFolder) {
views.setImageViewResource(R.id.favicon, R.drawable.bookmark_folder);
} else {
views.setImageViewBitmap(R.id.favicon, bookmark.favicon);
}
Intent fillIn;
if (bookmark.isFolder) {
fillIn = new Intent(getChangeFolderAction(mContext))
.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mWidgetId)
.putExtra(EXTRA_FOLDER_ID, id.toString());
} else {
fillIn = new Intent(Intent.ACTION_VIEW);
if (!TextUtils.isEmpty(url)) {
fillIn = fillIn.addCategory(Intent.CATEGORY_BROWSABLE)
.setData(Uri.parse(url));
} else {
fillIn = fillIn.addCategory(Intent.CATEGORY_LAUNCHER);
}
}
views.setOnClickFillInIntent(R.id.list_item, fillIn);
return views;
}