我正在实现文件传输服务器,我遇到了通过网络发送大于2 GB的文件的问题.当我得到File我想要使用并尝试将其内容读入a 时,问题就开始了byte[].我有一个for循环:
for(long i = 0; i < fileToSend.length(); i += PACKET_SIZE){
fileBytes = getBytesFromFile(fileToSend, i);
Run Code Online (Sandbox Code Playgroud)
其中getBytesFromFile()读取一个PACKET_SIZE字节数fileToSend,然后在for循环中将其发送到客户端.getBytesFromFile()使用i作为偏移; 但是,偏移量变量FileInputStream.read()必须是int.我确定有更好的方法将这个文件读入数组,我还没有找到它.
我宁愿不使用NIO,虽然我将来会改用它.放纵我的疯狂:-)
我有一个非常简单的appwidget(两个文本视图和一个按钮).我在触摸板,Droid 1和Droid Razr上进行了测试.它适用于除Razr之外的所有事物.当我将小部件添加到主屏幕时,它不会显示; 它只是看不见的.如果我按住它会选择一个小部件的位置,如果我移动它,我会看到其他小部件移开,但它完全不可见.
我在onReceiveand和onEnabled方法中放了一些Toast,并Toast显示了所有正确的信息(即意图动作和附加内容).
有人有这方面的经验吗?
编辑:请记住,这仅用于调试,不遵循最佳实践
public class GoogleTalkWidget extends AppWidgetProvider {
Button sendMessage;
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Received Intent Action = " +
intent.getAction(), Toast.LENGTH_SHORT).show();
if(intent.getAction().equals(Utils.RECEIVED_MESSAGE_WIDGET)){
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.main_widget);
views.setTextViewText(R.id.widget_message,
(CharSequence)intent.getStringExtra("MESSAGE"));
views.setTextViewText(R.id.widget_sender,
(CharSequence)intent.getStringExtra("SENDER"));
Toast.makeText(context, "Received " +
intent.getStringExtra("MESSAGE") + " FROM " +
intent.getStringExtra("SENDER"), Toast.LENGTH_SHORT).show();
ComponentName cn = new ComponentName(context,
GoogleTalkWidget.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn, views);
}
super.onReceive(context, intent);
}
@Override
public void onEnabled(final Context context){ …Run Code Online (Sandbox Code Playgroud) 我刚刚将一个项目从Eclipse导入到Android Studio中进行试用.我看到一些目录在右下角有一个蓝色方块,有些目录是蓝色而不是橙色.这是否意味着什么(我认为它确实如此),如果是这样,它意味着什么?

我正在开发一个允许用户使用simpleauth进行身份验证的webapp .目前我将支持谷歌和Facebook.除了登录和注销(使用webapp2)之外,webapp还将包含Cloud Endpoint API.客户端将是web,Android和iOS.
我的问题是,如果用户的身份验证提供者是Facebook(或任何其他受支持的OAuth2提供商),我可以使用Endpoints Proto Datastore来user_required=True调用endpoints.get_current_user()我的用户@Model.method吗?如果不可能,这是否意味着我不应该拥有user_required=True并且应该在给定OAuth2令牌的情况下从提供者处获取永久用户ID并将其保留在数据存储区中,为该用户生成我自己的身份验证令牌,然后将该令牌传递给每个请求?
编辑:没有传递身份验证令牌,让经过身份验证的用户请求他们可以传递给API方法的"API令牌"是否有意义?这个令牌是否必须包含在POST或GET正文中,或者它是否可以放在标题/ cookie中(我在其他地方看到了有关使用Cloud Endpoints的标题和cookie的一些问题,但从那以后它已经有一段时间了).这都假设非Google身份验证不起作用.
google-app-engine oauth-2.0 google-cloud-endpoints endpoints-proto-datastore gae-userservice
Android Wear 节点 ID 是否唯一(将节点 ID 存储为对特定穿戴设备的引用是否安全)?
如果没有,是否有一种独特的方法来识别特定的穿戴设备?
我正在扩展我的一个应用程序以使用Android Wear,我需要向Wear发送4个位图.我正在使用DataApi并DataMap执行此操作,目前它正常工作.
我的问题是,数据保持同步多长时间DataApi?一周后我还能访问它们吗?这是我必须手动管理的东西.例如,如果某个状态会在手机上发生变化,我需要发送不同的位图.我是否需要删除目前存在的?
我有一个库,在maven中心有一些小部件.当我将该库作为依赖项(从maven中心)添加到使用gradle的项目时,我得到:
java.lang.NoClassDefFoundError: com.my.pacakge.R$styleable
Run Code Online (Sandbox Code Playgroud)
如果我手动下载.aar并将其包含在项目中,一切正常.我尝试使用Android Studio的代码完成来查看是否R包含了库.当我使用maven依赖时,键入不com.my.pacakge.R返回任何结果,但是当我使用本地.aar时,它返回R库的库.
这是库代码:
// widget constructor
public ForegroundImageView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ForegroundImageView);
Drawable foreground = a.getDrawable(R.styleable.ForegroundImageView_android_foreground);
if (foreground != null) {
setForeground(foreground);
}
a.recycle();
}
// attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="ForegroundImageView">
<attr name="android:foreground"/>
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud) 嘿大家,
我有一个AsyncTask将一些数据发布到服务器.它通过调用我从doInBackground编写的静态方法来实现.当我运行的AsyncTask,我送调用执行()活动的背景下,这是我送给我的静态方法,因为它需要它来敬酒如果在谈话的服务器出现问题.但是,当在静态方法中进行Toast时,我收到此错误:
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): FATAL EXCEPTION: AsyncTask #1
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): java.lang.RuntimeException: An error occured while executing doInBackground()
04-21 12:49:16.689: ERROR/AndroidRuntime(2123):at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at java.lang.Thread.run(Thread.java:1019)
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
04-21 12:49:16.689: ERROR/AndroidRuntime(2123): at android.os.Handler.<init>(Handler.java:121)
04-21 …Run Code Online (Sandbox Code Playgroud) 任何人都知道为什么以下代码不起作用?
private fun wrapLogIfNeeded(buildMessageOnCurrentThread: Boolean, log: () -> String): () -> String
return if(buildMessageOnCurrentThread) {
val message = log() // Type mismatch: Required () -> String Found: Unit
{ message }
}
else {
log
}
}
Run Code Online (Sandbox Code Playgroud)
但这样做:
private fun wrapLogIfNeeded(buildMessageOnCurrentThread: Boolean, log: () -> String): () -> String
return if(buildMessageOnCurrentThread) {
val message = lazy { log() }.value
{ message }
}
else {
log
}
}
Run Code Online (Sandbox Code Playgroud) 如果我有以下内联类:
interface StringId {
val raw: String
}
@JvmInline
value class MyId(override val raw: String) : StringId
Run Code Online (Sandbox Code Playgroud)
将其传递给 Retrofit 函数是否安全?
interface MyApiEndpoints {
@GET("/fetch/{id}")
suspend fun fetch(@Path("id") id: MyId): Response<JsonObject>
}
Run Code Online (Sandbox Code Playgroud)