小编Lis*_*nne的帖子

从几个AsyncTasks获取结果

嗨,谢谢你的帮助.

我有一个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)

service android android-asynctask

7
推荐指数
1
解决办法
1407
查看次数

从方法中多次返回?

我有一个方法需要一段时间才能完成.我希望我的方法在返回"最终"结果之前返回"初步"结果.

我想知道是否有可能这样的事情:

public Object myMethod () {
    /*some computation here*/

     return firstResult;

     /*
     very long computation here
     */

     return finalResult;
}
Run Code Online (Sandbox Code Playgroud)

这甚至是可能的,还是可以建议某种解决方法?

java concurrency multithreading return

7
推荐指数
1
解决办法
5350
查看次数

为什么GridLayout没有填满所有可用空间?

我有一个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)

android

7
推荐指数
1
解决办法
2万
查看次数

如何处理Fragment中的网络调用

我有以下情况:

我有一个Activity主持人ViewPager,我有4个Fragments;

ViewPager开头包含片段A,

当用户在ViewPager 片段B上滑动进入ViewPager,然后片段C片段D ...等...

现在,只要FragmentPagerAdapter实例化,就会创建至少2个片段.

这带来了两个问题:

  1. 每个人都Fragment需要执行网络呼叫,但我不想做不必要的事情(如果用户从不滑动到片段B,我不想为片段B进行网络调用);
  2. 类似于1.),我需要显示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)

android

7
推荐指数
2
解决办法
3986
查看次数

如何实现通信Activity-Service

我有以下情况:

我有一个服务,定期检查互联网上的新数据,

  • 当新数据可用时,它们将被下载并保存在sqlite上.
  • 当保存到db完成时,服务广播一个intent,以便活动知道从db中提取新数据.

用户可能想要请求立即更新...

...在这种情况下,我使用Messenger来请求服务查找新数据

这是问题所在:

用户被通知请求正在进行,但可能需要一段时间,可能会失败,永远不会返回...

目前我收到一条消息(使用Messenger)从服务返回到活动通知请求的结果,或者,如果我没有消息,在x秒后我通知用户请求不成功.

  1. 请问你能提出一个不同的方法吗?
  2. 我不喜欢等待消息,如果在x秒后没有收到通知用户,是否有更好的方法?

java android

7
推荐指数
1
解决办法
237
查看次数

E/SQLiteLog(1893):( 14)无法打开[00bb9c9ce4]第30176行的文件

我正在使用本教程将数据库导入我的应用程序.

它在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)

sqlite android file

6
推荐指数
1
解决办法
1万
查看次数

Android:在getView()中执行异步操作的最佳实践

请不要关闭这个,恕我直言这是体面的,可能有用的编程问题.


请我阅读很多东西,因为我读了不同的意见和不同的方法,我感到很困惑.

问题如下:

getView()一个Adapter我需要执行一些异步操作,如检查在网络上的形成和更新基于该视图.

我使用了以下方法:

每次getView()都叫我开始了Thread

但我的做法为我赢得了很多批评:

/sf/answers/1993904181/

/sf/answers/1993903481/

/sf/answers/1993904601/

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)

concurrency multithreading android asynchronous

6
推荐指数
2
解决办法
4348
查看次数

Git:如何在合并之前返回

谢谢你的帮助。我真的很困惑

我合并了对队友的请求。

现在,我想回到合并之前的情况,因为我已经意识到引入了错误。拉请求是由24位朋友完成的,我在24位进行了合并。

  • 我需要回到20年代的情况。
  • 队友所做的更改将如何处理?我可以再次看到/使用它们吗?

谢谢!!!

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)

git

6
推荐指数
1
解决办法
4529
查看次数

为什么有时会调用SMS BroadcastReceiver两次?

我注册了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)

android

5
推荐指数
2
解决办法
1387
查看次数

来电后蓝牙SCO失败

我试图通过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 bluetooth bluetooth-sco

5
推荐指数
1
解决办法
1401
查看次数