好像我错过了一个未注册的接收器或其他东西,我可能知道在哪里添加///这个类是为了支持共享功能,以便我可以将特定文件共享给其他应用程序,如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)
答案 0 :(得分:0)
泄露的接收器由ChooserActivity创建,用于选择处理意图的活动(即,您有2个Web浏览器安装并且需要打开URL)。 检查ChooserActivity的代码后,我发现它将在onStop()上取消注册接收器。我认为这不是你的问题,也不是你能解决的问题。 一个原因可能是你的程序需要很多内存(我在logcaty上看到很多JVM_GC消息),因此系统会在不调用onStop的情况下终止ChooserActivity。我只是猜测,因为它深入Android Framework实现。