我有一个.NET Windows服务,它产生一个基本上只是作为一个线程的线程HttpListener.这在同步模式示例中工作正常......
private void CreateLListener()
{
HttpListenerContext context = null;
HttpListener listener = new HttpListener();
bool listen = true;
while(listen)
{
try
{
context = listener.GetContext();
}
catch (...)
{
listen = false;
}
// process request and make response
}
}
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是我需要这个来处理多个请求并让它们同时响应或者至少以重叠的方式响应.
进一步解释 - 客户端是一个媒体播放器应用程序,它首先请求带有请求标头属性的媒体文件Range bytes=0-.据我所知,它可以解决媒体容器的问题.
在读取了"块"之后(或者如果它已经读取足以确定媒体类型),它就会发出另一个请求(来自不同的客户端套接字号)Range bytes=X-Y.在这种情况下,Y是第一个响应中返回的Content-Length,X比该值小250000个字节(使用IIS作为测试发现).在这个阶段,它正在获得最后一个"块",看它是否可以获得媒体时间戳来衡量长度.
读完之后,它会Range bytes=0-(从另一个套接字号)发出另一个请求,开始正确地流式传输媒体文件.
但是,在任何时候,如果客户端的用户执行"跳过"操作,则它发送另一个请求(来自另一个套接字号),Range bytes=Z-其中Z是要跳转到媒体文件中的位置.
我对HTTP的东西不是很好,但据我所知,我需要使用多个线程来处理每个请求/响应,同时允许原始文件HttpListener返回监听.我做了很多搜索,但找不到一个似乎合适的模型.
编辑:
感谢Rick Strahl对以下示例的感谢,我能够根据自己的需要进行调整......
我有一个使用多种布局类型的自定义ListView适配器.一个是内置类型:
v = inflater.inflate(android.R.layout.simple_list_item_1, null);
Run Code Online (Sandbox Code Playgroud)
如何访问该布局上的TextView?什么是身份证?
TextView txt1 = (TextView) v.findViewById(***WHAT IS THE ID***);
txt1.setText("foo");
Run Code Online (Sandbox Code Playgroud)
如果您知道ID,您是如何找到它的?
正如标题所述,是否有任何来源(网页等)的每个API级别的汇总更改?
我有一个应用程序,我已经向一小组beta测试人员提出,我已经违反了Context.getExternalFilesDir(),我没有注意到它是在API Level 8中引入的,当时有几个人尝试过它在Android v2.1设备上.
我的大部分代码应该是非常通用的,但如果我能找到一个我可以快速浏览的精简/汇总列表/表格或类似代码,那将非常有用.
我从未对我的自定义CursorAdapter上的代码感到满意,直到今天我决定复习它并修复一个困扰我很长时间的小问题(有趣的是,我的应用程序的用户都没有报告过这样的问题).
这是我的问题的一个小描述:
我的自定义CursorAdapter覆盖newView(),bindView()而不是getView()我看到的大多数示例.我在这两种方法之间使用ViewHolder模式.但我的主要问题是我为每个列表项使用的自定义布局,它包含一个ToggleButton.
问题是当列表项视图滚出视图然后滚动回视图时,按钮状态不会保留.这个问题之所以存在,cursor是因为当ToggleButton按下时数据库数据发生了变化,并且它总是在拉动相同的数据.我在点击时尝试重新查询光标ToggleButton并解决了问题,但速度非常慢.
我已经解决了这个问题,我将全班发布在这里进行审核.我已经对这个特定问题彻底评论了代码,以便更好地解释我的编码决策.
这段代码对你来说好看吗?你会以某种方式改进/优化或改变它吗?
PS:我知道CursorLoader是一个明显的改进,但我暂时还没有时间处理这么大的代码重写.这是我在路线图中的一些东西.
这是代码:
public class NotesListAdapter extends CursorAdapter implements OnClickListener {
private static class ViewHolder {
ImageView icon;
TextView title;
TextView description;
ToggleButton visibility;
}
private static class NoteData {
long id;
int iconId;
String title;
String description;
int position;
}
private LayoutInflater mInflater;
private NotificationHelper mNotificationHelper;
private AgendaNotesAdapter mAgendaAdapter;
/*
* This is used to store the state of the …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,当按下按钮时会调用某人。然而,每当我启动应用程序时,它甚至在按下按钮之前就崩溃了。这是代码:
包 com.test;
导入 android.app.Activity;
导入 android.content.ActivityNotFoundException;
导入 android.os.Bundle;
导入 android.widget.*;
导入 android.view.*;
导入 android.view.View.OnClickListener;
导入 android.content.Intent;
导入android.net.Uri;
导入 android.util.Log;
公共类 MainActivity 扩展 Activity {
私有 OnClickListener mButtonListener = new OnClickListener() {
public void onClick(View v) {
尝试 {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:123456789"));
开始活动(callIntent);
}
捕获(ActivityNotFoundException 活动异常){
Log.e("测试", "调用失败");
}
}
};
/** 在第一次创建活动时调用。*/
@覆盖
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(mButtonListener);
}
};
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" …Run Code Online (Sandbox Code Playgroud) 我有一个有四个活动的天气应用程序.主要/启动器活动是'隐形'使用...
机器人:主题= "@安卓风格/ Theme.Translucent.NoTitleBar"`
...在解雇其他活动之前,它只是用来做一些检查(这是否是一个新安装,网络连接是否可用等).其他活动是面向UI的 - 两个简单地显示从网站提取的天气数据,第三个提供位置'选择器',以便用户可以选择显示天气的区域.
但是,所有四个活动都使用WeatherHelper对象,该对象基本上可以执行从检查可用SD卡存储到维护首选项以及拉取/格式化网站页面等所有操作.
所以,我的问题...有一个WeatherHelper实例的最佳方法是什么,可以被多个活动使用,以及在我的情况下最好在哪里/如何创建它?
多年来我一直是OO程序员,但我对Android和设计概念都很陌生 - 过去几周我在Android开发者网站上看了很多,但我已经停止尝试决定这个.
任何想法都感激不尽.
我的Android应用程序使用HTTP向用户自己的PC发送/检索数据,并且它与少数beta测试人员一起工作正常.我现在需要考虑PC正在休眠的情况.
我之前从未这样做过,但我已经google搜索有关WOL'魔术包'的信息以及一些用C编写的简单源(在客户端使用CAsyncSocket).通过用户家庭网络上的Wi-Fi连接执行此操作可能相对简单,但理想情况下我希望这可以通过移动互联网工作(假设用户可以配置其家庭路由器接受/转发数据包).
我猜我需要使用一些通用的Java网络代码,我一直在关注java.net.
此时我无法决定是否应该使用java.net.Socket或java.net.DatagramSocket.所以问题是,我是否正确地接近这种方式以及我应该使用哪两种套接字类型(或者两者都足够)?非常感谢.
提前致谢...
即时通讯使用此代码在http请求中设置http标头验证网址..
但我觉得有些什么是因为我无法得到回应......
响应仍然像"需要授权"......
httpParameters = new BasicHttpParams();
String auth = android.util.Base64.encodeToString(
("florin999@zitec.ro" + ":" + "test2323" + ":" + "zitec"
+ ":" + "7716099f468cc71670b68cf4b3ba545c5760baa7")
.getBytes("UTF-8"), android.util.Base64.NO_WRAP);
HttpConnectionParams.setSoTimeout(httpParameters, 0);
client = new DefaultHttpClient(httpParameters);
String getURL = "URL here";
get = new HttpGet(getURL);
get.addHeader("Authorization", "Basic "+ auth);
// get.addHeader("X-ZFWS-Accept", "text/json");
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
//do something with the response
//Toast.makeText(Login.this.getApplicationContext(),EntityUtils.toString(resEntityGet), Toast.LENGTH_SHORT).show();
String s = EntityUtils.toString(resEntityGet);
tv1.setText(s);
}
}catch(Exception e){
}
Run Code Online (Sandbox Code Playgroud)
plssss尽快帮助我
我正在使用以下代码在我的Android应用程序上分享内容:
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "blah blah blah");
this.startActivity(Intent.createChooser(shareIntent, "Choose a sharing option:"));
Run Code Online (Sandbox Code Playgroud)
我需要知道用户是否共享成功或是否失败.无论如何在共享操作完成时获得回调?
我正在使用YouTube API for Android.视频播放正常,但是当我转动屏幕时,播放器停止播放视频,它从一开始就回来,好像它没有播放一样.滚动屏幕并隐藏播放器时也会发生同样的情况.我已经研究了很多,并且还测试了一些我找到但没有用的东西=(
这是我宣布我的课程的方式:
public class PlayerTest extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener {
Run Code Online (Sandbox Code Playgroud)
这就是我在onCreate()中添加的内容:
YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
youTubeView.initialize(DEVELOPER_KEY, this);
Run Code Online (Sandbox Code Playgroud)
这是我实现的方法:
@Override
public void onInitializationFailure(Provider provider,
YouTubeInitializationResult error) {
Toast.makeText(this, "Error :( " + error.toString(), Toast.LENGTH_LONG)
.show();
}
@Override
public void onInitializationSuccess(Provider provider,
YouTubePlayer player, boolean wasRestored) {
player.cueVideo(video);
}
Run Code Online (Sandbox Code Playgroud)
题:
我希望视频在滚动或翻转屏幕时继续播放.这可能吗?我正在以正确的方式实施?如果没有,最好的方法是什么?
提前感谢您的帮助!
android ×9
c# ×1
callback ×1
database ×1
httplistener ×1
java ×1
optimization ×1
share ×1
wake-on-lan ×1
youtube ×1
youtube-api ×1