嗨,谢谢你的帮助.
我有一个method调用AsyncTask从网络中检索一些数据.
在method 被称为顺序几次,因此将启动几个AsyncTasks.
从每次启动method我需要从相对的AsyncTask(而不是之前或之后调用的其他AsyncTask)中获取正确的结果.
任何帮助非常感谢.
编辑编辑编辑编辑添加其余代码.
请注意:整个过程在服务中运行.
public static class UpdateService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int[] appWidgetIds = intent.getIntArrayExtra("widgetsids");
final int N = appWidgetIds.length;
AppWidgetManager manager = AppWidgetManager.getInstance(this);
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
Log.e("","i="+Integer.toString(i)+ " di "+Integer.toString(N));
RemoteViews view = buildUpdate(getApplicationContext(),
appWidgetIds);
manager.updateAppWidget(appWidgetId, view);
}
return (START_NOT_STICKY);
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我有一个方法需要一段时间才能完成.我希望我的方法在返回"最终"结果之前返回"初步"结果.
我想知道是否有可能这样的事情:
public Object myMethod () {
/*some computation here*/
return firstResult;
/*
very long computation here
*/
return finalResult;
}
Run Code Online (Sandbox Code Playgroud)
这甚至是可能的,还是可以建议某种解决方法?
我有一个GridLayout(我以编程方式添加子项).
结果很难看,因为GridLayout没有填充所有可用空间.
这是结果:

这是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.GridLayout
android:id="@+id/gridlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white" >
</android.support.v7.widget.GridLayout>
</HorizontalScrollView>
</ScrollView>
Run Code Online (Sandbox Code Playgroud) 我有以下情况:
我有一个Activity主持人ViewPager,我有4个Fragments;
在ViewPager开头包含片段A,
当用户在ViewPager 片段B上滑动进入ViewPager,然后片段C和片段D ...等...
现在,只要FragmentPagerAdapter实例化,就会创建至少2个片段.
这带来了两个问题:
Fragment需要执行网络呼叫,但我不想做不必要的事情(如果用户从不滑动到片段B,我不想为片段B进行网络调用);ProgessDialog片段何时执行网络调用,但我不想显示片段B中的对话框,如果用户永远不会去...请问在这种情况下我应该使用什么样的模式?
活动
public class PagerActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_layout);
ViewPager pager=(ViewPager)findViewById(R.id.pager);
TabPageIndicator tabs=(TabPageIndicator)findViewById(R.id.titles);
pager.setAdapter(buildAdapter());
tabs.setViewPager(pager);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
Run Code Online (Sandbox Code Playgroud)
FragmentPagerAdapter
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
@Override
public int getCount() {
return (4);
}
@Override
public Fragment getItem(int position) …Run Code Online (Sandbox Code Playgroud) 我有以下情况:
我有一个服务,定期检查互联网上的新数据,
用户可能想要请求立即更新...
...在这种情况下,我使用Messenger来请求服务查找新数据
这是问题所在:
用户被通知请求正在进行,但可能需要一段时间,可能会失败,永远不会返回...
目前我收到一条消息(使用Messenger)从服务返回到活动通知请求的结果,或者,如果我没有消息,在x秒后我通知用户请求不成功.
我正在使用本教程将数据库导入我的应用程序.
它在API 10上运行良好,
但在API 17上会抛出以下错误:
05-19 14:52:46.492: E/SQLiteLog(1893): (14) cannot open file at line 30176 of [00bb9c9ce4]
05-19 14:52:46.492: E/SQLiteLog(1893): (14) os_unix.c:30176: (2) open(/data/data/com.example.koday/databases/dizionario7.sqlite) -
05-19 14:52:46.492: E/SQLiteDatabase(1893): Failed to open database '/data/data/com.example.koday/databases/dizionario7.sqlite'.
05-19 14:52:46.492: E/SQLiteDatabase(1893): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
05-19 14:52:46.492: E/SQLiteDatabase(1893): at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
05-19 14:52:46.492: E/SQLiteDatabase(1893): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
05-19 14:52:46.492: E/SQLiteDatabase(1893): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
05-19 14:52:46.492: E/SQLiteDatabase(1893): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
05-19 14:52:46.492: E/SQLiteDatabase(1893): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
05-19 14:52:46.492: E/SQLiteDatabase(1893): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
05-19 14:52:46.492: …Run Code Online (Sandbox Code Playgroud) 请不要关闭这个,恕我直言这是体面的,可能有用的编程问题.
请我阅读很多东西,因为我读了不同的意见和不同的方法,我感到很困惑.
问题如下:
在getView()一个Adapter我需要执行一些异步操作,如检查在网络上的形成和更新基于该视图.
我使用了以下方法:
每次getView()都叫我开始了Thread
但我的做法为我赢得了很多批评:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
//...
}
else {
//...
}
Thread th= new Thread(new Runnable() {
@Override
public void run() {
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
CheckSomeInfoOverTheInternet(url, new myCallback {
@Override
public void onSuccess() {
holder.textview.setText("OK");
}
@Override
public void onFailre() {
holder.textview.setText("NOT OK!!!!");
}
});
}
}); …Run Code Online (Sandbox Code Playgroud) 谢谢你的帮助。我真的很困惑
我合并了对队友的请求。
现在,我想回到合并之前的情况,因为我已经意识到引入了错误。拉请求是由24位朋友完成的,我在24位进行了合并。
谢谢!!!
commit ff1e9ecfa13c5050957b77bd5b5695d802415867
Merge: 053c894 437e11c
Author: me
Date: Tue Mar 24 09:06:11 2015 +0100
Merged ' changes on xxx
commit 437e11c23ae7da68f8bb3698557bdc2aa3d9a614
Merge: a129401 adfd8c5
Author: someone else
Date: Tue Mar 24 00:00:18 2015 +1000
Merge pull request #17 from
xxx
commit adfd8c5c30541095ee48ce64da14740f92594ec8
Author: someone else
Date: Mon Mar 23 23:54:06 2015 +1000
xx
commit 053c89426460ffaa86873bed342bc38e24a13096
Merge: 849ec63 35fdbc6
Author: me
Date: Fri Mar 20 07:57:13 2015 +0100
Run Code Online (Sandbox Code Playgroud) 我注册了BroadcastReceiver android.provider.Telephony.SMS_RECEIVED.
有时,BroadcastReceiver onReceive在同一条SMS上被调用两次.
这是为什么?
我究竟做错了什么?
private void initSmsReceivers() {
smsReceiver = new SmsReceiver();
getActivity().registerReceiver(smsReceiver,
new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
}
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// ---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null) {
// ---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < …Run Code Online (Sandbox Code Playgroud) 我试图通过SCO发送应用程序的所有音频.
我能够成功发送音频,
但是当有来电时,我需要断开SCO表格,以便应用音频不会干扰通话,
问题是,当我尝试在通话后将音频重新路由到SCO时,它不起作用.
这是我用来将音频发送到SCO的代码:
public class BluetoothManager {
// For Bluetooth connectvity
private static String TAG = "BluetoothManager";
private static BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
private static AudioManager aM;
/**
* Set the audio manager of the device.
* @param c: The context this method is called from
*/
public static void setAudioManager(Context c) {
aM = (android.media.AudioManager)c.getSystemService(Context.AUDIO_SERVICE);
}
/**
* Check if a Bluetooth headset is connected. If so, route audio to Bluetooth SCO.
*/
private static void initializeAudioMode(Context …Run Code Online (Sandbox Code Playgroud) android ×8
concurrency ×2
java ×2
asynchronous ×1
bluetooth ×1
file ×1
git ×1
return ×1
service ×1
sqlite ×1