"您是否错过了对未注册接收者的呼叫?" Android

时间:2014-04-25 01:45:17

标签: android android-intent

好像我错过了一个未注册的接收器或其他东西,我可能知道在哪里添加///这个类是为了支持共享功能,以便我可以将特定文件共享给其他应用程序,如facebook。

package com.example.mobile_e_commerce;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;

import android.app.Activity;
import android.app.Fragment;
import android.content.ContextWrapper;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.support.v4.content.FileProvider;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ProgressBar;

public class MyWishlist extends Activity {
public final static String EXTRA_MESSAGE = "com.example.mobile_e_commerce.product_name";
private static final ResourceBundle rb = ResourceBundle.getBundle("com.example.mobile_e_commerce.webserviceurl");
/////*****////////
static final String[] MOBILE_OS = new String[100];
public static List<String> ITEMS = new ArrayList<String>();
private static List<String> uri = new ArrayList<String>();
final Handler handler = new Handler();
private ProgressBar progressBar;
FileInputStream in;
InputStreamReader inputStreamReader;
BufferedReader reader;
String line;

//可以忽略这个oncreate方法,因为问题不应该在这里

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_my_wishlist);

        loadData();

        //  progressBar.setVisibility(View.VISIBLE);
          handler.postDelayed(new Runnable() {
              @Override
              public void run() { 
                  int i =0;
                  String line;
                  try {
                    line = reader.readLine();

                  CheckBox checkBox = (CheckBox)findViewById(R.id.checkBox1);

                //Do set the item in list view after 1700ms,700ms = 1.7s
                  while(line!=null){

                          checkBox.setText(line);
                          checkBox.setTextSize(20);

                     line = reader.readLine();//read from file line by line
                  }
                          in.close();
                  reader.close();
                  } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            //    progressBar.setVisibility(View.GONE);
              }
            }, 2000);




        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

此方法是在列出的目录中创建我的文件的uri

    public void onCheckboxClicked(View view) {
        // Is the view now checked?
        boolean checked = ((CheckBox) view).isChecked();
        String state = Environment.getExternalStorageState();
        if(Environment.MEDIA_MOUNTED.equals(state))
        {
        Log.e("External Stroage: ", "Connected!");
        }
        String filepath= "Mobile_E-Commerce";
    //  ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
        File path = Environment.getExternalStorageDirectory();
        //File directory = contextWrapper.getExternalFilesDir(filepath);
        //in = new FileInputStream(new File(directory.toString() + "/wishlist"));
        File requestFile = new File(path,"Android" + File.separator + "data" + File.separator + "com.example.mobile_e_commerce" + File.separator + "files" + File.separator + "Mobile_E-Commerce" + File.separator + "wishlist");   
        Log.e("Location: ", path.toString());
        Uri fileUri;
   // Check which checkbox was clicked
    switch(view.getId()) {
        case R.id.checkBox1:
            if (checked)
                // Generate URI from content
                   try {
                       fileUri = FileProvider.getUriForFile(
                                MyWishlist.this.getApplicationContext(),
                                "com.example.mobile_e_commerce.fileprovider",
                                requestFile);
                       uri.add(fileUri.toString());
                   } catch (IllegalArgumentException e) {
                       e.printStackTrace();
                   }
            //Log.e("Process: ", "Success!");
            break;  
      }
    }

这种方法只是将数据加载到复选框,所以问题不应该在这里

    public void loadData()
    {
        //progressBar = (ProgressBar)findViewById(R.id.progressBar1);
                String filepath= "Mobile_E-Commerce";
                ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
                File directory = contextWrapper.getExternalFilesDir(filepath);//get the file location
                try{
                in = new FileInputStream(new File(directory.toString() + "/wishlist.txt"));
                inputStreamReader = new InputStreamReader(in);
                reader = new BufferedReader(inputStreamReader);
                }
                catch(Exception ee)
                {
                    ee.printStackTrace();
                }
    }


    @Override
    protected void onResume()
    {
        super.onResume();
        //(new objectTransfer()).execute(null,null,null);

        //Log.e("Task Running", "AsyncTask");
    }



    @Override
    protected void onPause()
    {
        super.onPause();
    //  objectTransfer.ITEM_MAP.clear();
        ITEMS.clear();
        uri.clear();
    }

我想我应该在这里宣布像unregisterreceiver这样的东西,但是有人可以教我在unregisterreceiver里放什么

    @Override
    protected void onStop()
    {
      //  unregisterReceiver(sendBroadcastReceiver);
       // unregisterReceiver(deliveryBroadcastReceiver);
       // super.onStop();
    }


    public static void listCounter()
    { 

        int i =0;
        Iterator<String> it = ITEMS.iterator();
        while (it.hasNext()) {      
            MOBILE_OS[i] = it.next();
            i++;
    }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my_wishlist, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        else if(id == R.id.share_feature){
        //  MenuItem menu  = menu(R.id.share_feature);
            shareFeaturePage();
        }

        return super.onOptionsItemSelected(item);
    }




      public void shareFeaturePage()//tempo method for sharing content through fb Api
        {try{
            Uri screenshotUri = Uri.parse(uri.get(0));
            Log.e("URI: ", screenshotUri.toString());
            final Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.setDataAndType(screenshotUri, getContentResolver().getType(screenshotUri));
            sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM, screenshotUri);
            startActivity(Intent.createChooser(sharingIntent,"Share using"));
        }
        catch(Exception ee)
        {
            ee.printStackTrace();
        }
        }
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
                View rootView = inflater.inflate(R.layout.fragment_my_wishlist,
                    container, false);
            return rootView;
        }
    }

}

logcat的:

04-25 09:22:45.810: I/ActivityThread(2842): Pub com.example.mobile_e_commerce.fileprovider: android.support.v4.content.FileProvider
04-25 09:22:45.840: E/dalvikvm(2842): No JIT support for bytecode f0 at offsetPC 0
04-25 09:22:45.840: E/dalvikvm(2842): JIT implementation not found
04-25 09:22:45.840: I/dalvikvm(2842): codeGenBasicBlockJit returns negative number
04-25 09:22:46.000: D/dalvikvm(2842): GC_FOR_ALLOC freed 108K, 27% free 6540K/8899K, paused 0ms
04-25 09:22:46.000: I/dalvikvm-heap(2842): Grow heap (frag case) to 10.941MB for 2524908-byte allocation
04-25 09:22:46.020: D/dalvikvm(2842): GC_CONCURRENT freed 1K, 21% free 9004K/11395K, paused 0ms+0ms
04-25 09:22:46.110: D/dalvikvm(2842): GC_FOR_ALLOC freed 2468K, 40% free 7638K/12547K, paused 10ms
04-25 09:22:47.640: I/PGA(2842): New SOCKET connection: bile_e_commerce (pid 2842, tid 2842)
04-25 09:22:51.400: D/dalvikvm(2842): GC_CONCURRENT freed 1248K, 34% free 8322K/12547K, paused 0ms+0ms
04-25 09:22:51.500: E/dalvikvm(2842): No JIT support for bytecode f0 at offsetPC 0
04-25 09:22:51.500: E/dalvikvm(2842): JIT implementation not found
04-25 09:22:51.500: I/dalvikvm(2842): codeGenBasicBlockJit returns negative number
04-25 09:22:54.630: E/External Stroage:(2842): Connected!
04-25 09:22:54.630: E/Location:(2842): /mnt/sdcard
04-25 09:23:09.120: E/URI:(2842): content://com.example.mobile_e_commerce.fileprovider/wishlist/wishlist.txt
04-25 09:24:37.410: E/External Stroage:(2842): Connected!
04-25 09:24:37.410: E/Location:(2842): /mnt/sdcard
04-25 09:24:39.010: E/External Stroage:(2842): Connected!
04-25 09:24:39.010: E/Location:(2842): /mnt/sdcard
04-25 09:24:41.270: E/URI:(2842): content://com.example.mobile_e_commerce.fileprovider/wishlist/wishlist.txt
04-25 09:24:44.030: W/IInputConnectionWrapper(2842): showStatusIcon on inactive InputConnection
04-25 09:25:28.690: I/ActivityThread(3293): Pub com.example.mobile_e_commerce.fileprovider: android.support.v4.content.FileProvider
04-25 09:25:28.710: D/dalvikvm(3293): GC_FOR_ALLOC freed 122K, 27% free 6540K/8899K, paused 0ms
04-25 09:25:28.730: I/dalvikvm-heap(3293): Grow heap (frag case) to 10.940MB for 2524908-byte allocation
04-25 09:25:28.750: D/dalvikvm(3293): GC_CONCURRENT freed 1K, 21% free 9004K/11395K, paused 0ms+0ms
04-25 09:25:28.840: D/dalvikvm(3293): GC_FOR_ALLOC freed 2468K, 40% free 7637K/12547K, paused 0ms
04-25 09:25:28.940: I/PGA(3293): New SOCKET connection: bile_e_commerce (pid 3293, tid 3293)
04-25 09:25:31.490: D/dalvikvm(3293): GC_CONCURRENT freed 1249K, 34% free 8321K/12547K, paused 0ms+0ms
04-25 09:25:31.570: E/dalvikvm(3293): No JIT support for bytecode f0 at offsetPC 0
04-25 09:25:31.570: E/dalvikvm(3293): JIT implementation not found
04-25 09:25:31.570: I/dalvikvm(3293): codeGenBasicBlockJit returns negative number
04-25 09:25:31.590: E/dalvikvm(3293): No JIT support for bytecode f0 at offsetPC 0
04-25 09:25:31.590: E/dalvikvm(3293): JIT implementation not found
04-25 09:25:31.590: I/dalvikvm(3293): codeGenBasicBlockJit returns negative number
04-25 09:25:31.610: E/dalvikvm(3293): No JIT support for bytecode f0 at offsetPC 0
04-25 09:25:31.620: E/dalvikvm(3293): JIT implementation not found
04-25 09:25:31.620: I/dalvikvm(3293): codeGenBasicBlockJit returns negative number
04-25 09:25:35.030: E/External Stroage:(3293): Connected!
04-25 09:25:35.030: E/Location:(3293): /mnt/sdcard
04-25 09:25:37.520: E/URI:(3293): content://com.example.mobile_e_commerce.fileprovider/wishlist/wishlist.txt
04-25 09:25:40.450: W/IInputConnectionWrapper(3293): showStatusIcon on inactive InputConnection
04-25 09:26:28.630: W/IInputConnectionWrapper(3293): showStatusIcon on inactive InputConnection
04-25 09:26:32.840: I/ActivityThread(3550): Pub com.example.mobile_e_commerce.fileprovider: android.support.v4.content.FileProvider
04-25 09:26:32.850: D/dalvikvm(3550): GC_FOR_ALLOC freed 108K, 27% free 6540K/8899K, paused 10ms
04-25 09:26:32.850: I/dalvikvm-heap(3550): Grow heap (frag case) to 10.941MB for 2524908-byte allocation
04-25 09:26:32.870: D/dalvikvm(3550): GC_CONCURRENT freed 1K, 21% free 9004K/11395K, paused 0ms+0ms
04-25 09:26:32.990: D/dalvikvm(3550): GC_FOR_ALLOC freed 2468K, 40% free 7638K/12547K, paused 0ms
04-25 09:26:33.100: I/PGA(3550): New SOCKET connection: bile_e_commerce (pid 3550, tid 3550)
04-25 09:26:42.050: D/dalvikvm(3550): GC_CONCURRENT freed 1251K, 33% free 8424K/12547K, paused 0ms+0ms
04-25 09:26:42.100: E/dalvikvm(3550): No JIT support for bytecode f0 at offsetPC 0
04-25 09:26:42.100: E/dalvikvm(3550): JIT implementation not found
04-25 09:26:42.100: I/dalvikvm(3550): codeGenBasicBlockJit returns negative number
04-25 09:26:42.130: E/dalvikvm(3550): No JIT support for bytecode f0 at offsetPC 0
04-25 09:26:42.130: E/dalvikvm(3550): JIT implementation not found
04-25 09:26:42.130: I/dalvikvm(3550): codeGenBasicBlockJit returns negative number
04-25 09:26:42.130: E/dalvikvm(3550): No JIT support for bytecode f0 at offsetPC 0
04-25 09:26:42.130: E/dalvikvm(3550): JIT implementation not found
04-25 09:26:42.130: I/dalvikvm(3550): codeGenBasicBlockJit returns negative number
04-25 09:26:44.970: E/External Stroage:(3550): Connected!
04-25 09:26:44.970: E/Location:(3550): /mnt/sdcard
04-25 09:26:50.180: E/URI:(3550): content://com.example.mobile_e_commerce.fileprovider/wishlist/wishlist.txt
04-25 09:26:54.250: W/IInputConnectionWrapper(3550): showStatusIcon on inactive InputConnection
04-25 09:27:53.830: I/ActivityThread(3793): Pub com.example.mobile_e_commerce.fileprovider: android.support.v4.content.FileProvider
04-25 09:27:53.840: D/dalvikvm(3793): GC_FOR_ALLOC freed 129K, 27% free 6539K/8899K, paused 0ms
04-25 09:27:53.860: I/dalvikvm-heap(3793): Grow heap (frag case) to 10.940MB for 2524908-byte allocation
04-25 09:27:53.880: D/dalvikvm(3793): GC_CONCURRENT freed 1K, 21% free 9004K/11395K, paused 0ms+0ms
04-25 09:27:53.980: D/dalvikvm(3793): GC_FOR_ALLOC freed 2468K, 40% free 7637K/12547K, paused 20ms
04-25 09:27:54.210: I/PGA(3793): New SOCKET connection: bile_e_commerce (pid 3793, tid 3793)
04-25 09:28:03.750: E/dalvikvm(3793): No JIT support for bytecode f0 at offsetPC 0
04-25 09:28:03.750: E/dalvikvm(3793): JIT implementation not found
04-25 09:28:03.750: I/dalvikvm(3793): codeGenBasicBlockJit returns negative number
04-25 09:28:03.760: D/dalvikvm(3793): GC_CONCURRENT freed 1251K, 33% free 8423K/12547K, paused 0ms+0ms
04-25 09:28:03.790: E/dalvikvm(3793): No JIT support for bytecode f0 at offsetPC 0
04-25 09:28:03.790: E/dalvikvm(3793): JIT implementation not found
04-25 09:28:03.790: I/dalvikvm(3793): codeGenBasicBlockJit returns negative number
04-25 09:28:07.560: E/External Stroage:(3793): Connected!
04-25 09:28:07.560: E/Location:(3793): /mnt/sdcard
04-25 09:28:10.070: E/URI:(3793): content://com.example.mobile_e_commerce.fileprovider/wishlist/wishlist.txt
04-25 09:28:14.320: D/AndroidRuntime(3793): Shutting down VM
04-25 09:28:14.320: W/dalvikvm(3793): threadid=1: thread exiting with uncaught exception (group=0xb2c18180)
04-25 09:29:27.140: I/ActivityThread(4180): Pub com.example.mobile_e_commerce.fileprovider: android.support.v4.content.FileProvider
04-25 09:29:27.180: D/dalvikvm(4180): GC_FOR_ALLOC freed 98K, 27% free 6540K/8899K, paused 0ms
04-25 09:29:27.200: I/dalvikvm-heap(4180): Grow heap (frag case) to 10.941MB for 2524908-byte allocation
04-25 09:29:27.220: D/dalvikvm(4180): GC_CONCURRENT freed 1K, 21% free 9004K/11395K, paused 0ms+0ms
04-25 09:29:27.340: D/dalvikvm(4180): GC_FOR_ALLOC freed 2468K, 40% free 7638K/12547K, paused 0ms
04-25 09:29:27.470: I/PGA(4180): New SOCKET connection: bile_e_commerce (pid 4180, tid 4180)
04-25 09:29:30.360: D/dalvikvm(4180): GC_CONCURRENT freed 1248K, 34% free 8321K/12547K, paused 0ms+0ms
04-25 09:29:30.410: E/dalvikvm(4180): No JIT support for bytecode f0 at offsetPC 0
04-25 09:29:30.410: E/dalvikvm(4180): JIT implementation not found
04-25 09:29:30.410: I/dalvikvm(4180): codeGenBasicBlockJit returns negative number
04-25 09:29:30.410: E/dalvikvm(4180): No JIT support for bytecode f0 at offsetPC 0
04-25 09:29:30.410: E/dalvikvm(4180): JIT implementation not found
04-25 09:29:30.410: I/dalvikvm(4180): codeGenBasicBlockJit returns negative number
04-25 09:29:33.290: E/External Stroage:(4180): Connected!
04-25 09:29:33.290: E/Location:(4180): /mnt/sdcard
04-25 09:29:34.980: E/URI:(4180): content://com.example.mobile_e_commerce.fileprovider/wishlist/wishlist
04-25 09:29:35.710: W/IInputConnectionWrapper(4180): showStatusIcon on inactive InputConnection
04-25 09:29:36.490: E/ActivityThread(4180): Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@b350ffc0 that was originally registered here. Are you missing a call to unregisterReceiver()?
04-25 09:29:36.490: E/ActivityThread(4180): android.app.IntentReceiverLeaked: Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@b350ffc0 that was originally registered here. Are you missing a call to unregisterReceiver()?
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:763)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:567)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1052)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:1039)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:1033)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:341)
04-25 09:29:36.490: E/ActivityThread(4180):     at com.android.internal.content.PackageMonitor.register(PackageMonitor.java:65)
04-25 09:29:36.490: E/ActivityThread(4180):     at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:99)
04-25 09:29:36.490: E/ActivityThread(4180):     at com.android.internal.app.ChooserActivity.onCreate(ChooserActivity.java:53)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.Activity.performCreate(Activity.java:4465)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1051)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.os.Looper.loop(Looper.java:137)
04-25 09:29:36.490: E/ActivityThread(4180):     at android.app.ActivityThread.main(ActivityThread.java:4424)
04-25 09:29:36.490: E/ActivityThread(4180):     at java.lang.reflect.Method.invokeNative(Native Method)
04-25 09:29:36.490: E/ActivityThread(4180):     at java.lang.reflect.Method.invoke(Method.java:511)
04-25 09:29:36.490: E/ActivityThread(4180):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
04-25 09:29:36.490: E/ActivityThread(4180):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:592)
04-25 09:29:36.490: E/ActivityThread(4180):     at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

泄露的接收器由ChooserActivity创建,用于选择处理意图的活动(即,您有2个Web浏览器安装并且需要打开URL)。 检查ChooserActivity的代码后,我发现它将在onStop()上取消注册接收器。我认为这不是你的问题,也不是你能解决的问题。 一个原因可能是你的程序需要很多内存(我在logcaty上看到很多JVM_GC消息),因此系统会在不调用onStop的情况下终止ChooserActivity。我只是猜测,因为它深入Android Framework实现。